- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLのPDO接続に関して)
MySQLのPDO接続でINSERT文が書き込めない理由について
このQ&Aのポイント
- MySQLのPDO接続を使用してデータベースにアクセスする際、SELECT文では問題なくデータを取得できるが、INSERT文を使用してデータを追加することができず困っている。
- PDO接続に成功したことを確認し、INSERT文のソースコードを記述しているが、データの追加に失敗している。
- テーブルの構造や項目の型に変更はなく、同じソースコードで他のテーブルには書き込みができているため、問題の原因がわからない。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
prepare も成功してるなら、あとは warning でも発生してるのかな? SQL文エラーじゃなくてwarning のほうは、mysqlでは、"show warnings" っていうSQL文を直後に発行しないと捉えられないので、$flagがfalse だったとき以下実行。 <?php $w = $dbh->query("show warnings"); var_dump($w->fetchAll(PDO::FETCH_ASSOC)); ?> ※ mysql は5.1 以降でないと show warnings は無効です。 一応、SQL文のエラーは、errorInfo() でチェックして下さい。execute()の返値を見ても、エラー時は false かnull なだけですので。 <?php var_dump($stmt->errorInfo()); ?>
お礼
解決しました。テーブルの項目名にSQLで使う用語が含まれているのが原因でした。ありがとうございました。
補足
ご回答いただき、ありがとうございました。 下記エラーが発生しているようです。 ヘテムルのレンタルサーバーで運用しております。 改善案をご教授いただけないでしょうか。 引き続き、よろしくお願いいたします。 ■実行文 $w = $dbh->query("show warnings"); var_dump($w->fetchAll(PDO::FETCH_ASSOC)); ■画面表示 array(1) { [0]=> array(3) { ["Level"]=> string(5) "Error" ["Code"]=> string(4) "1064" ["Message"]=> string(225) "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 'content2,flag2) values ('','0','ここに作成したいページタブの内' at line 1" } } ■実行文 var_dump($stmt->errorInfo()); ■画面表示 array(3) { [0]=> string(5) "42000" [1]=> int(1064) [2]=> string(225) "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 'content2,flag2) values ('','0','ここに作成したいページタブの内' at line 1" }