#調べたことはPDO=データベース抽象化レイヤー、Stack trace=エラーの順番(道筋)、PDOExceptionなのでデータベース抽象化レイヤーの例外ということです。コピペしたのにも関わらずなので分からなくなってしまいました。解決方法をご教授願えますでしょうか。お願いします。
ps コードはコピペしないほうが良いのでしょうか?HTML、CSS、あとはUnityなどで変数(PHPでは$が変数を表す)・クラス・条件分岐・関数・メソッド(echoは文字列を出力する)などは理解できています。勉強しているサイト→https://took.jp/bulletin-board/
エラーコードです。
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error in C:\xampp\htdocs\send.php:39 Stack trace: #0 {main} thrown in C:\xampp\htdocs\send.php on line 39
該当箇所です。
<?php foreach($regist as $loop):?>
全体です。
<!DOCTYPE html> <meta charset="UTF-8"> <title>掲示板サンプル</title> <h1>掲示板サンプル</h1> <section> <h2>投稿完了</h2> <button onclick="location.href='index.php'">戻る</button> </section> <!-- 追記ここから --> <?php $id = null; $name = $_POST["name"]; $contents = $_POST["contents"]; date_default_timezone_set('Asia/Tokyo'); $createed_at = date("Y-m-d H:i:s"); //DB接続情報を設定します $pdo = new PDO("mysql:dbname=sample;host=localhost","root","",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); //ここで「DB接続NG」だった場合、接続情報に誤りがあります。 if($pdo){echo "DB接続OK";} else{echo"DB接続NG";} //SQLを実行。 $regist = $pdo->prepare("INSERT INTO post(id, name, contents, created_at) VALUES (:id,:name,:contents,:created_at)"); $regist->bindParam(":id", $id); $regist->bindParam(":name", $name); $regist->bindParam(":contents", $contents); $regist->bindParam(":created_at", $created_at); $regist->execute(); //ここで「登録失敗」だった場合、SQL文に誤りがあります。 if ($regist) { echo "登録成功"; } else { echo "登録失敗"; } ?> <!-- 追記ここまで --> <section> <h2>投稿内容一覧</h2> <?php foreach($regist as $loop):?> <div>No:<?php echo $loop['id']?></div> <div>名前:<?php echo $loop['name']?></div> <div>投稿内容:<?php echo $loop['contents']?></div> <div>------------------------------------------</div> <?php endforeach;?> </section>
回答2件
あなたの回答
tips
プレビュー