フォームから入力されたデータをインサートした後に、データベースの情報を表示させたいです。
SQL文のあたりが怪しいのですが、分からなくて困っています。
エラーメッセージは
Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column '佐々木 康' in 'field list' in C:\xampp\htdocs\php\chat\chat.php:31 Stack trace: #0 C:\xampp\htdocs\php\chat\chat.php(31): PDO->query('INSERT INTO cha...') #1 {main} thrown in C:\xampp\htdocs\php\chat\chat.php on line 31
という感じです。
phpのソースは
<?php $dsn = 'mysql:dbname=chatlog;host=localhost'; $user = 'testuser'; $password = 'yasushi'; try { $dbh = new PDO($dsn, $user, $password); echo "接続成功\n"; } catch (PDOException $e) { echo "接続失敗: " . $e->getMessage() . "\n"; exit(); } $name = $_POST['name']; $log = $_POST['text']; //echo $name; echo $log; // SQL作成 $sql = "INSERT INTO chatlog (id, name, log) VALUES ('', $name, $log)"; // SQL実行 $res = $dbh->query($sql); $data = "SELECT * from chatlog"; $stmt = $dbh->query($data); $result = $stmt->fetchAll(); print_r($result); // 接続を閉じる $dbh = null; ?>
よろしくお願いします。
コードは要約してませんか?
提示したコードが書かれているファイルとエラーが起きているファイルは同じですか?
どこまで想定どおりに通ってますか?
PHPのソースですが、
上部の
<html lang="ja">
<head>
<meta charset="utf-8">
<title>チャット</title>
</head>
<body>
と下部の
</body>
</html>
は略してます。
本来はhtmlもあります。 htmlで入力フォームを書き、入力されたデータはphpファイルに渡してます。
試しに入力されたデータを echoで表示させましたが、きちんと表示されました。エラーが起きているファイルは上記のphpファイルと思います。
31行目は
$res = $dbh->query($sql);
の部分です。
省略や要約は見ている人にあらぬ詮索を強いるので、半端にするくらいなら再現するコードを別途組み直してパスワードなどだけマスクして提示されたほうが良いですね。
エラーに書いてある行数と合わないと、それだけで回答へのヒントが消えますから。
なので「思う」ではなく確実にしてください。コードは書いたとおりにしか動きません。
いずれにしてもコードだけではなくDB側の定義もあったほうが良いです。
すいませんでした。 今後気を付けます。
質問は編集できますのでいつくるかわからない今後に後回ししないほうが良いです。だいたいの人が忘れます。
回答2件
あなたの回答
tips
プレビュー