質問: PHPの中でsql文を入れています。 フィールドに入れる値の順序と型は確認して、合わせています。 しかし、sql文に関してエラーが出力されました。 エラー内容についてどなたかご教授ください。 実行結果として、下記メッセージが出力されました。 object(PDOException)#3 (8) { ["message":protected]=> string(78) "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'danjo' in 'field list'" ["string":"Exception":private]=> string(0) "" ["code":protected]=> string(5) "42S22" ["file":protected]=> string(41) " 実行したコードのSQL文は下記となります。 $lastmembercode=0; $dsn='mysql:dbname=ranzan;host=localhost;charset=utf8'; $user='root'; $password=''; $dbh=new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try { $sql='INSERT INTO student (password,name,email,postal1,postal2,address,tel,danjo,born) VALUES (?,?,?,?,?,?,?,?,?)'; $stmt=$dbh->prepare($sql); $data=array(); $data[]=md5($password); $data[]=$name; $data[]=$email; $data[]=$postal1; $data[]=$postal2; $data[]=$address; $data[]=$tel; if($danjo=='dan') { $data[]=1; } else { $data[]=2; } $data[]=$born; $stmt->execute($data); $sql='SELECT LAST_INSERT_ID()'; } catch (Exception $e) { var_dump($e); } $stmt=$dbh->prepare($sql); $stmt->execute(); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $lastmembercode=$rec['LAST_INSERT_ID()']; $dbh=null; print '会員登録が完了いたしました。';
回答: SQL文としては構文エラーとなる要因は見つかりませんでしたが、 念のためプログラム内の**INSERT文(?は具体的な値に置き換え)をMySQLで直接実行して正常に実行されるか確認**してみて下さい。 直接実行でも同様のエラーが出る場合は、**studentテーブルの定義を確認**してみてください。 恐らく「danjo」カラムが存在していないはずなので、それがエラー原因となります。 対策としては、 **カラムの追加、またはSQL文を修正**となります。