今、研修でお問い合わせフォームを作成しています。
PDOはできているはずなのに、MySQLへデータの格納がされない!
エラーも特に表示されない!!
何が、問題なんだろう?とずっとハマっていました。
PDOは、下の関数を使用して実行するプログラムにしていました。
function connectDb() {
try {
return new PDO(DSN, DB_USER, DB_PASSWORD);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
}
色々調べたり、先輩にアドバイスをもらったりしたところ、PDOはDB接続のエラーは、Exceptionで返してくれるけど、SQL実行時のエラーはスルーするようです。
このエラーの確認方法としては、
PDO::errorInfoを使用したりと、色々方法があるようですが、
上に書いた、PDO実行関数の第四引数に「array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION))」を追加するのが、一番、良いのでは?という結論になりました。
下のプログラムですね。
function connectDb() {
try {
return new PDO(DSN, DB_USER, DB_PASSWORD
, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
}
ちなみに、エラーの原因は、スペルミスでした!
【参考サイト】
http://piyopiyocs.blog115.fc2.com/blog-entry-657.html
http://php.net/manual/ja/pdo.errorinfo.php