-4

重複の可能性:
このクエリ mysql の何が問題なのですか?

mysql と php を使用してレコードを更新しています。これが私のコードです:

$n=mysql_query("UPDATE chondas SET model='$model1', yearstart=$yearstart1,
                yearstop=$yearstop1, desc='$desc1', hp='$hp1', 
                engine='$engine1',trim='$trim1', weight='$weight1' WHERE id=$id1");

次のコードでは、すべてを取り出すとdesc='$desc1'完全に機能します。このエラーの原因は何ですか?

phpmyadmin で次のコードをテストすると、次のエラーが発生しました。

#1064 - SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'desc='textarea のテキスト' 付近で使用する正しい構文を確認してください。

4

3 に答える 3

3

DESCmysql の予約語なので、バッククォートを使用する必要があります。

UPDATE chondas SET model='$model1', yearstart=$yearstart1, yearstop=$yearstop1, `desc`='$desc1', hp='$hp1', engine='$engine1',trim='$trim1', weight='$weight1' WHERE id=$id1

また、SQL インジェクションの可能性を回避するために、PDO (または mysqli) と変数がバインドされた準備済みステートメントに切り替える必要があります。

于 2013-01-08T23:12:38.703 に答える
2

DESCは MySQL の予約語です。

バックティックでエスケープする

 `desc` = '$desc1'
于 2013-01-08T23:12:30.283 に答える
0

次のような変数名を phpMyAdmin に含めると、クエリは実行されません。

UPDATE chondas SET model='$model1', yearstart=$yearstart1,
yearstop=$yearstop1, **desc='$desc1'**, hp='$hp1', 
engine='$engine1',trim='$trim1', weight='$weight1' WHERE id=$id1

また、「」と「」を混在させると、PHP は実行されません。"UPDATE chondas SET model='$model1'...

于 2013-01-08T23:16:57.150 に答える