電子書籍の厳選無料作品が豊富!

PHP+MySQLにてプログラムを作成しております。
まったくの初心者なのですが、ネットや参考書を片手に形になるものは一応できました。

これまではわからないながらも何とか調べて対応してきたのですが、どうしても対応できない事態に陥ってしまい、投稿したしだいです。
フィールドの数が違うだけで、型はほぼ同じ2つのテーブルがあり、1つにはINSERT文で追加できるが、もうひとつにはできないという事象です。
////////////【OK】////////////
INSERT INTO
action
(
anum ,
mnum ,
kekka
)
VALUES
(

'$anum',
'$mnum',
'$kekka'
);
////////////【NG】////////////
INSERT INTO
check
(
aprched,
aprch
)
VALUES
(
'12',
'555'
);
/////////////////////////////////////////////////
【NG】の文は【OK】をコピペした後、field名などを対応する名前に変えただけです。なぜフィールド部を変更しただけでエラーになるのかまったく糸口がつかめません。
質問の仕方もわかりにくいかと思いますが、心当たりの方いらっしゃればご意見お聞かせください。

A 回答 (2件)

「check」は、MySQLの予約語です。



http://dev.mysql.com/doc/refman/4.1/ja/reserved- …

予約語と同じ名前を表や列に使う場合は、MySQLでは「`」(バッククォート)で囲む必要があります。

つまり、
INSERT INTO `check`(aprched,aprch) ~
のように指定します。
英単語を表名や列名に使う場合、予約語とぶつかることも多いので、「`」で囲む週間をつけておいた方がいいでしょう。

ちなみに、「`」で囲むというのは、MySQL独自仕様で、標準SQLや主要なRDBMSでは、「"」(ダブルクォーテーション)で囲みます。
    • good
    • 0
この回答へのお礼

chukenkenkou様ご回答ありがとうございます。

すごく基本的なところなのですね。sqlMyadminを使用しているレンサバを借りて実験していて、そこでレコードの挿入をするときには「`」がついてて何か関係あるのかな・・・とかは感じてたのですが。。

「`」=「'」と同意のつもりでもいました(汗

普通の??キーボードで「`」が標準では入力できないようなので、それでも引っかかってました。。

すごく助かりました。ありがとうございます。

お礼日時:2008/02/26 18:59

>「`」=「'」と同意のつもりでもいました



「'」(シングルクォーテーション)で囲んだものは、文字定数です。

例)'ABC'→文字のABC
  '123'→文字の123。ただし、MySQLでは、数値として扱うと自動的に数値にキャストしてくれる。(というか、されてしまう)

「"」(ダブルクォーテーション)で囲んだものもMySQLでは、文字定数として扱われます。

例)"ABC"→文字のABC

なお、MySQLにはサーバ起動モードで、MySQL構文モード(デフォルト)と、ANSI構文モードがあり、ANSI構文モードで起動すると、「"」は標準SQL通り予約語と同じ表名や列名を使う場合に名前を囲む記号として扱われます。

>普通の??キーボードで「`」が標準では入力できないよう

「@」のキーのところにありませんか?
私のキーボードでは、Shift+@で入力できますが?
    • good
    • 0
この回答へのお礼

chukenkenkou様

たびたび勉強させてもらいます。

「`」入力できました。汗

自分の使っている参考書は、素材集のようなものと、Mysqlはかいつまんだ部分しかないので、本格的にするにはまだまだ修行が必要なようですね。。

精進いたします。ありがとうございました。

お礼日時:2008/02/28 21:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!