▼すべてのカテゴリーを見る

AUTO_INCREMENT指定のカラムにPDOでINSERTするときのメモ

webprogrum_eye

MySQLにPDOでデータをINSERTしようとした時に、AUTO_INCREMENTを設定したカラム(自動で連番が入力される)に挿入する値をbindValueする際に上手くいかなかったのでメモ。

後から考えれば初歩的なことでした。というか、PDOとMySQLの仕組みをしっかり理解できてなかった自分が悪い。

つまずいたとこ

こんなテーブル(db_name.table_name)があるとする。

id(AUTO_INCREMENT) book price
1 えほん 1200
2 まんが 500

ここにPDOでデータを挿入する際に以下のような準備をしていました。
(PDOでDBに接続する部分は省略します。)

変数$idに何を代入すればいいのかわからなかったので、テキトーに、

とかやってみた。

結果:
Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[HY000]: General error: 1366 Incorrect integer value: ” for column ‘id’ at row 1 …

まあそうでしょうね。。

いろいろ試してみた結果

あれこれやってみましたが、結論。

これだけ。

$id = NULL;にすればいいだけだったんですが、なんで無駄に時間がかかったかというと、table_name.idはNULLを許可していないカラムだったので、変数に代入する際にNULLを入れるという発想になりませんでした。
ちなみに、

とか、

とか、

とか、ダメと分かっててとりあえずやってみましたけど、やっぱり全部うまくいきませんでした(あたりまえw)。

結局、PDOでAUTO_INCREMENTカラムにINSERTで値を突っ込むときは、

変数にNULLを代入してprepare & バインドをする

という結果に至りましたとさ。おわり。

面白かったら、役に立ったら、何も感じなかったら「いいね!」してね!

仕事そっちのけで記事を書いた人

プログラムしたりトレードしたりスケートしたりけん玉したりするひと。趣味はトライアンドエラー。優しいときもあれば厳しいときもある。寝不足を基本とする。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です