ブラウザを更新するたびに空のデータがデータベースに蓄積されます。
色々調べても理由がわかりませんでしたので投稿しました。
どこかコードがおかしいところがあるでしょうか?
環境
Vagrant
CentOS7
Apache 2.4
php7
Mysql 5.7
index.php
1<?php 2require_once('config.php'); 3ini_set('display_errors', TRUE); 4error_reporting(E_ALL); 5?> 6 7<!DOCTYPE html> 8<html> 9<head> 10<meta http-equiv="X-UA-Compatible" content="IE=edge"> 11<title>PHP掲示板</title> 12<meta charset="utf-8"> 13<meta name="author" content=""> 14<meta name="viewport" content="width=device-width, initial-scale=1"> 15<link rel="stylesheet" href="style.css"> 16<link rel="shortcut icon" href=""> 17</head> 18<body> 19 <h1>PHP掲示板</h1> 20<!-- コンテンツを記述 --> 21<form action="" method="POST"> 22<label for="nameForm">名前:</label> 23<p><input id="nameForm" type="text" name="name" value="" style="width:280px"/></p> 24<label for="commentForm">コメント:</label> 25<p><textarea id="commentForm" name="comment" rows="8" cols="50"></textarea></p> 26<p><input id="submitForm" type="submit" name="submit" value="投稿"></p> 27</form> 28<!-- 投稿一覧 --> 29<h2>投稿一覧</h2> 30<?php if (empty($_POST['name']) || $_POST['name'] === ''): ?> 31 名前がありません。 32<?php elseif (empty($_POST['comment']) || $_POST['comment'] === ''): ?> 33 コメントがありません。 34<?php endif; ?> 35 36 <?php foreach( $posts as $post ): ?> 37 <ul> 38 <div class="list"> 39 <div class="name"><li><?php echo '名前:'. $post['name']; ?></li></div><br> 40 <div class="comment"><li><?php echo $post['comment']; ?></li></div> 41 <li> </li> 42 </div> 43 </ul> 44 <?php endforeach; ?> 45 46</body> 47</html>
config.php
1<?php 2/* 設定 */ 3// DSN(Data Source Name) 4define('DB_DSN', 'mysql:dbname=paisen1_bbs;host=localhost;charset=utf8'); 5define('DB_USER', 'root'); // ユーザー名 6define('DB_PASS', 'rude19=J%79kunshi'); // パスワード 7 8header('Content-Type: text/html; charset=utf-8'); 9 10try { 11 12 // データベースに接続 13 $pdo = new PDO( 14 DB_DSN, 15 DB_USER, 16 DB_PASS, 17 [ 18 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 19 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 20 ] 21 ); 22 23 /* データベースから値を取ってきたり, データを挿入したりする処理 */ 24 $stmt = $pdo->prepare("insert into board (name, comment) values (:name, :comment)"); 25 $stmt->execute([':name'=>$_POST['name'],':comment'=>$_POST['comment']]); 26 echo "inserted: " . $pdo->lastInsertId(); 27 28 $query = $pdo->query("select * from board ORDER BY id DESC"); 29 $posts = $query->fetchAll(PDO::FETCH_ASSOC); 30 31 $delete = $pdo->prepare("DELETE FROM board WHERE id=(:id)"); 32 $delete->execute([':id'=>$_POST['id']]); 33 34 35} catch (PDOException $e) { 36 37 // エラーが発生した場合は「500 Internal Server Error」でテキストとして表示して終了する 38 // - ここではエラー内容を表示しているが, 実際の商用環境ではログファイルに記録して, Webブラウザには出さないほうが望ましい 39 header('Content-Type: text/plain; charset=UTF-8', true, 500); 40 exit($e->getMessage()); 41 42} 43
回答1件
あなたの回答
tips
プレビュー