• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP/MySQL INSERT文について。)

PHP/MySQL INSERT文のエラー解決方法とは?

このQ&Aのポイント
  • PHP/MySQL INSERT文でカラムを指定して値を挿入しようとしたらエラーが出る問題が発生しています。カラムAAAはauto_incrementになっており、問題なく書き込まれますが、BBB、CCC、DDDは書き込みが不要の場合もあるため、カラム指定の書き込みは必須です。
  • INSERT INTO TESTtable VALUES (last_insert_id(),50,600,50)とした場合は問題なく値が書き込まれますが、INSERT INTO TESTtable (AAA,BBB,CCC,DDD) VALUES (last_insert_id(),50,600,50)とした場合、書き込みができません。
  • さまざまな試みをしましたが、解決策が見つかりませんでした。この問題についての解決方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

いまいち何をしたいのかわかりません。 AAAがAUTOINCREMENTなら、わざわざlast_insert_id()を指定しなくてよいのでは? INSERT IGNORE INTO `TESTtable`(`BBB`,`CCC`,`DDD`) VALUES(50,600,50) とすればいいような気がしますが? ※IGNOREはエラー回避のためにつけています。基本的にはなくても動きます ※テーブル名、カラム名はバッククォートで囲むのがMySQLのルールです

その他の回答 (2)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.3

last_insert_id() は、接続後初めて実行するときは、0なので、  → AUTO_INCREMENT カラムに0 の値を挿入 → 自動採番実行 となります。 2回目以降は、+1 しないと既に存在する値を入れようとすることになりduplicate error になる。エラー内容もチェックしてくださいね。 マニュアルも読んでね。 http://dev.mysql.com/doc/refman/5.1/ja/create-table.html http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html

回答No.2

質問内容が、いまいち分かりにくいですが。。。 MySQLの質問をする場合は、最低限、MySQL 4.0、4.1、5.0といったレベルまでバージョンを提示してください。 実機確認しておらず、的外れかも知れませんけど。 last_insert_id()は、どこから拾ってきているのですか? また、「書込みが行われない」とは、具体的にどうなるのですか?警告やエラーが出ているなら、具体的に提示してください。 もし提示されたinsert文を、その通りの順番で実行しているなら、最初のinsert文の実行時のlast_insert_id()はnullか0で、自動で採番されてinsertできているのかも。 そして2番目以降のinsertでは、その前のinsertで自動で採番されlast_insert_id()に値が入っているので、その同じ値でinsertすることになり、重複エラーになっていたりしませんか? auto_incrementで番号を生成するには、 (1)その列に値を格納しない (2)nullを格納 (3)0を格納 といった方法になります。 1以上を格納する場合は、自動で採番されず、その指定した値が格納されます。

関連するQ&A