1

次のコードで MySQL 構文エラーが発生します。

$addcompany = mysql_query("INSERT INTO company (method, category, email, password,   
companyname, phone, address, state, zip, ratingcount, ratingscore, usage, date)
VALUES ('$method','$category','$email','$temp_encrypted_password',
'$companyname','$phone','$address','$state','$zip','0','0','0',CURDATE()) ")
or die(mysql_error());

したがって、ステートメントは死にます。MySQLエラーが教えてくれます:

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 'usage, date) VALUES 
('referral','referral','email@gmail.com','d90ccafeea7983' at line 1

テーブルを確認しましたが、すべての列名が正しく、挿入しようとしているものと列に入力できるものとの間に競合はないようです。

そのため、何が単純なエラーであるに違いないのか、この時点でかなりイライラしています。ここの誰かが私の右のクイックにそれを指摘できることを願っています。

御時間ありがとうございます

4

3 に答える 3

6

usage予約語であり、バッククォートを使用してエスケープする必要があります。

... ratingscore, `usage`, date) ...
于 2013-02-08T23:06:28.073 に答える
1

フィールド名をバッククォートで囲んでみてください: `fieldname1`、`fieldname2`。これにより、mysql キーワードが予約済みキーワードと見なされなくなります。

さらに、ユーザー入力をフィルタリングする必要があります。しかし、これはあなたの質問には関係ありません。安全のためのヒントにすぎません。;-)

于 2013-02-08T23:09:12.197 に答える
0

これを試して

(method, category, email, password,   
companyname, phone, address, state, zip, ratingcount, ratingscore, \usage\, date)

'usage'予約語として直接使用することはできません

于 2013-02-08T23:07:52.440 に答える