質問: 初歩的な質問で恐縮です。 下記コードを実行しましたが、なぜか内容がデータベースに保存されません。 ``` $FromEmail=$_POST['FromEmail']; $ToEmail=$_POST['ToEmail']; $Message=$_POST['Message']; $sql="INSERT INTO Message (Text,From,To,Date) VALUES(:ms,:fm,:tm,CURDATE()) "; $stt=$pdo->prepare($sql,array(PDO::ATTR_CURSOR=>PDO::CURSOR_SCROLL)); $stt->execute( array( ':ms'=>$Message, ':fm'=>$FromEmail, ':tm'=>$ToEmail ) ); ``` var_dumpで$_POSTの中身を調べた所 array(3) { ["FromEmail"]=> string(20) "xxxxxxxx@hotmail.com" ["ToEmail"]=> string(22) "xxxxxxxxxx@yahoo.co.jp" ["Message"]=> string(24) "お疲れ様でした。" } と出ましたので、データのセットはできているようです。 しかし、phpmyadminでMessageテーブルを見ても、ページを更新しても、該当の情報は記録されていません。 Messageテーブルの各フィールドの種別は(フィールド名->種別) Date->date From->char(255) To->char(255) Text->mediumtext です。 $pdoについては、他で同じ設定で動作を確認しているので、問題はないと思います。 どうすれば保存されますか。
回答: `Text`、`From`、`To`、`Date`はすべて、MySQLで特別な意味を持つ単語です(リファレンス)。バッククオートで囲んで、カラムであることを明示してください。 ``` INSERT INTO Message (`Text`,`From`,`To`,`Date`) VALUES(:ms,:fm,:tm,CURDATE()) ```