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

INSERTできない。PHP+MySQLにてプログラムを作成しております。

このQ&Aのポイント
  • フィールドの数が異なるだけで、型は同じ2つのテーブルがありますが、1つにはINSERT文でレコードを追加できますが、もうひとつにはできません。
  • 【NG】の文は【OK】をコピペしてフィールド名を変更しただけですが、なぜフィールド部分を変更するとエラーが発生するのか理解できません。
  • どなたか、この問題の原因や解決策についてご意見をいただけると助かります。初心者ですが、よろしくお願いします。

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

  • ベストアンサー
回答No.1

「check」は、MySQLの予約語です。 http://dev.mysql.com/doc/refman/4.1/ja/reserved-words.html 予約語と同じ名前を表や列に使う場合は、MySQLでは「`」(バッククォート)で囲む必要があります。 つまり、 INSERT INTO `check`(aprched,aprch) ~ のように指定します。 英単語を表名や列名に使う場合、予約語とぶつかることも多いので、「`」で囲む週間をつけておいた方がいいでしょう。 ちなみに、「`」で囲むというのは、MySQL独自仕様で、標準SQLや主要なRDBMSでは、「"」(ダブルクォーテーション)で囲みます。

monmon1024
質問者

お礼

chukenkenkou様ご回答ありがとうございます。 すごく基本的なところなのですね。sqlMyadminを使用しているレンサバを借りて実験していて、そこでレコードの挿入をするときには「`」がついてて何か関係あるのかな・・・とかは感じてたのですが。。 「`」=「'」と同意のつもりでもいました(汗 普通の??キーボードで「`」が標準では入力できないようなので、それでも引っかかってました。。 すごく助かりました。ありがとうございます。

その他の回答 (1)

回答No.2

>「`」=「'」と同意のつもりでもいました 「'」(シングルクォーテーション)で囲んだものは、文字定数です。 例)'ABC'→文字のABC   '123'→文字の123。ただし、MySQLでは、数値として扱うと自動的に数値にキャストしてくれる。(というか、されてしまう) 「"」(ダブルクォーテーション)で囲んだものもMySQLでは、文字定数として扱われます。 例)"ABC"→文字のABC なお、MySQLにはサーバ起動モードで、MySQL構文モード(デフォルト)と、ANSI構文モードがあり、ANSI構文モードで起動すると、「"」は標準SQL通り予約語と同じ表名や列名を使う場合に名前を囲む記号として扱われます。 >普通の??キーボードで「`」が標準では入力できないよう 「@」のキーのところにありませんか? 私のキーボードでは、Shift+@で入力できますが?

monmon1024
質問者

お礼

chukenkenkou様 たびたび勉強させてもらいます。 「`」入力できました。汗 自分の使っている参考書は、素材集のようなものと、Mysqlはかいつまんだ部分しかないので、本格的にするにはまだまだ修行が必要なようですね。。 精進いたします。ありがとうございました。

関連するQ&A