やっていること
パーフェクトPHP(2016)を読みながら、コードを写しています
insertの処理が動いておらず、DBに値が入力されません
下のコードで何が間違っている点はありますでしょうか?
特にweb上でエラーは出ていません
そのまま、写すとmysql > mysqli関係のエラーが出たので、少し改善しました
<?php // データベースに接続 $link = mysqli_connect('localhost', 'root', ''); if(!$link){ die('データベースに接続できません: ' . mysqli_error()); } // データベースを選択する mysqli_select_db($link , 'oneline_bbs'); $errors = array(); // POSTなら保存処理実行 if($_SERVER['REQUEST_METHOD'] === 'POST'){ // 名前が正しく入力されているかチェック $name = null; if(!isset($_POST['name']) || !strlen($_POST['name'])){ $errors['name'] = '名前を入力してください'; } else if(strlen($_POST['name']) > 40){ $errors['name'] = '名前は40文字以内で入力してください'; } else{ $name = $_POST['name']; } // ひとことが正しく入力されているかチェック $comment = null; if(!isset($_POST['comment']) || !strlen($_POST['comment'])){ $errors['comment'] = 'ひとことを入力してください'; } else if(strlen($_POST['comment']) > 200){ $errors['comment'] = 'ひとことは200文字以内で入力してください'; } else{ $comment = $_POST['comment']; } // エラーがなければ保存 if(count($errors) === 0){ // 保存するためのSQL文を作成 $sql = "INSERT INTO `post` (`name`,`comment`,`create_at`) VALUES ('" . mysqli_real_escape_string($link , $name) . "','" . mysqli_real_escape_string($link , $comment) . "','" . date('Y-m-d H:i:s') . "')"; // 保存する mysqli_query($link,$sql); } } ?> <!DOCTYPE html> <html> <head> <title>ひとこと掲示板</title> </head> <body> <h1>ひとこと掲示板</h1> <form action="bbs.php" method="post"> <?php if(count($errors)):?> <ul class="error_list"> <?php foreach($error as $error):?> <li> <?php echo htmlspecialchars($error, ENT_QUOTES,'UTF-8') ?> </li> <?php endforeach; ?> </ul> <?php endif; ?> 名前: <input type="text" name="name" /> <br> ひとこと: <input type="text" name="comment" size="60" /> <br> <input type="submit" name="submit" value="送信する" /> </form> </body> </html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/28 11:35
2017/09/29 01:21
2017/09/29 01:27
2017/09/29 05:43
2017/09/29 05:52
2017/09/29 06:08