2012-03-06 9 views
1

でMySQLのテーブルに挿入しようとしたとき、私は私の構文を使用して、間違っているのか分からないが、私は何か欠けている:私はこのエラーを受け取るERROR PHP

$createrequest = mysql_query("INSERT INTO products_updates_queue (id, kid, 
product_version_id, key, ip) VALUES ('$request_id', '$uid', '$version_id', 
'$request_key', '$request_ip')"); 

を:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key, ip) VALUES ('j4ctveyd0x62', '1', 'z451ah3', 'hqbyu7bhg8za', '64.134.163.2' at line 2"

誰かが私が逃しているものを見ることができますか

答えて

3

keyは、MySQLではreserved wordです。避けるか、バッククックで包んでください。

編集:あなたはあなたがそのクエリに入れている変数をエスケープすることを願っています。

+0

ありがとうございます!これで解決しました!あなたの答えを最初に見ました! – nitsuj

6

私はkeyが予約語なので、それを列名として使用しないでください。その周辺でバッククックを使用してみてください:

$createrequest = mysql_query("INSERT INTO products_updates_queue (id, uid, product_version_id, `key`, ip) VALUES ('$request_id', '$uid', '$version_id', '$request_key', '$request_ip')"); 
+0

+1を列名として使用することを避けることを提案してください(より良い解決策を次にバッククォートでラップする必要があります) –

+0

あなたの返信ありがとう!私はあなたの前に@DCoderからの解決策を見ましたが、他の人が(同じ問題を抱えている場合)この列名の使用を避けるようにあなたを受け入れます。 – nitsuj

+0

もう1人のユーザーは、それを避けるように指示します。あなたが一番好きな答えを自由に受け入れてください! – bfavaretto