質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

777閲覧

phpでエラーが出る

twsoccer15

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/01/23 10:07

前提・実現したいこと

ログインシステムを作成しているが、エラーが発生する

発生している問題・エラーメッセージ

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSEAT INTO users (email,pass,login_time) VALUES ('info@webukatu.com','password'' at line 1 in C:\MAMP\htdocs\ユーザー登録システム\index.php:87 Stack trace: #0 C:\MAMP\htdocs\ユーザー登録システム\index.php(87): PDOStatement->execute(Array) #1 {main} thrown in C:\MAMP\htdocs\ユーザー登録システム\index.php on line 87

ソースコード

<?php error_reporting(E_ALL); //E_STRICTレベル以外のエラーを報告する ini_set('display_errors','on');//画面にエラーを表示させるか //1.post送信されていた場合 if(!empty($_POST)){ //エラーメッセージを定数に設定 define('MSG01','入力必須です'); define('MSG02','Emailの形式で入力してください'); define('MSG03','パスワード(再入力)があっていません'); define('MSG04','半角英数字のみご利用できます'); define('MSG05','6文字以上で入力してください'); //配列$err_msgを用意 $err_msg = array(); //2.フォームが入力されていない場合 if(empty($_POST['email'])){ $err_msg['email'] = MSG01; } if(empty($_POST['pass'])){ $err_msg['pass'] = MSG01; } if(empty($_POST['pass_retype'])){ $err_msg['pass_retype'] = MSG01; } if(empty($err_msg)){ //変数にユーザー情報を代入 $email = $_POST['email']; $pass = $_POST['pass']; $pass_re = $_POST['pass_retype']; //3.email形式ではない場合 if(!preg_match("/^([a-zA-Z0-9])+([a-zA-z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $email)){ $err_msg['email'] = MSG02; } //4.パスワードとパスワード再入力があっていない場合 if($pass !== $pass_re){ $err_msg['pass'] = MSG03; } if(empty($err_msg)){ //5.パスワードとパスワード再入力が半角英数字でない場合 if(!preg_match("/^[a-zA-Z0-9]+$/", $pass)){ $err_msg['pass']= MSG04; }elseif(mb_strlen($pass) < 6){ //6.パスワードとパスワード再入力が6文字以上ではない場合 $err_msg['pass'] = MSG05; } if(empty($err_msg)){ //DBへの接続準備 $dsn = 'mysql:dbname=php_sample01;host=localhost;charset=utf8'; $user = 'root'; $password = 'root'; $options = array( //SQL実行失敗時に例外をスロー PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //デフォルトフェッチモードを連想配列形式に設定 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //バッファードクエリを使う(一度に結果セットをすべて取得し、サーバー負荷を軽減 //SELECTで得た結果に対してもrowcountメゾットを使えるようにする PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); // PDOオブジェクト生成(DB接続) $dbh = new PDO($dsn, $user, $password, $options); //SQL文 (クエリー作成) $stmt = $dbh->prepare('INSEAT INTO users (email,pass,login_time) VALUES (:email,:pass,:login_time)'); //プレースホルダーに値をセットし、SQL文を続行 $stmt->execute(array(':email' => $email, ':pass' => $pass, ':login_time' => date('Y-m-d H:i:s'))); header("Location:mypage.php"); //マイページへ } } } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ホームページのタイトル</title> <style> body{ margin: 0 auto; padding: 150px; width: 25%; background: #fbfbfa; } h1{ color: #545454; font-size: 20px;} form{ overflow: hideden; } input[type="text"]{ color: #545454; height: 60px; width: 100%; padding: 5px 10px; font-size: 16px; display: block; margin-bottom: 10px; box-sizing: boder-box; } input[type="password"]{ color: #545454; height: 60px; width: 100%; padding: 5px 10px; font-size: 16px; display: block; margin-bottom: 10px; box-sizing: boder-box; } input[type="submit"]{ border: none; padding: 15px 30px; margin-bottom: 15px; background: #3d3938; color: white; float: right; } input[type="submit"]:hover{ background: #111; cursor: pointer; } a{ color: #545454; display: block; } a:hover{ text-decolation: none; } .err_msg{ color: #ff4d4b; } </style> </head> <body> <h1>ユーザー登録</h1> <form method="post"> <span class="err_msg"><?php if(!empty($err_msg['email'])) echo $err_msg['email']; ?></span> <input type="text" name="email" placeholder="email" value="<?php if(!empty($_POST['email'])) echo $_POST['email'];?>"> <span class="err_msg"><?php if(!empty($err_msg['pass'])) echo $err_msg['pass']; ?></span> <input type="password" name="pass" placeholder="パスワード" value="<?php if(!empty($_POST['pass'])) echo $_POST['pass'];?>"> <span class="err_msg"><?php if(!empty($err_msg['pass_retype'])) echo $err_msg['pass_retype']; ?></span> <input type="password" name="pass_retype" placeholder="パスワード(再入力) " value="<?php if(!empty($_POST['pass_retype'])) echo $_POST['pass_retype'];?>"> <input type="submit" value="送信"> </form> <a href="mypage.php">マイページへ</a> </body> </html>

###試したこと

何回かコード修正したが反映されず

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

"INSEAT" → "INSERT"

投稿2019/01/23 10:19

kasa0

総合スコア578

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

回答じゃないです
XSS 対策とか、パスワードのハッシュとか、他にもログインシステムとして致命的な箇所があるんで、セキュリティの基礎学習したほうが良いよ。

投稿2019/01/23 11:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーメッセージを翻訳してみてください。

投稿2019/01/23 10:13

kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://webukatu.com/
ここで聞けばいいのでは・・・

投稿2019/01/23 11:40

ohesotori

総合スコア150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問