0

私はこれについて頭を悩ませることはできません。

特定のデータベース フィールドを更新する単純な PHP スクリプトを作成しています。

このクエリは正常に動作し、まったく問題はありませんが、setting_id が変更される可能性があるため、適していない/移植性がありません

mysql_query("UPDATE oc_setting SET value='" . $css . "'" . 'WHERE setting_id=13576',    $con) or die(mysql_error());

このクエリは、どのような状況でも機能しないようです。これが必要なクエリです。

mysql_query("UPDATE oc_setting SET value='" . $css . "'" . 'WHERE key="sellya_custom_css"', $con) or die(mysql_error());

次のエラーが残ります。SQL 構文にエラーがあります。1 行目の 'key="sellya_custom_css"' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

今、おそらく予約済みのキーワードか何かであるキーという単語を含む何かがあるかもしれないという予感がしたので、引用符で囲んでみました。スクリプトはエラーを発生させませんでしたが、フィールドも更新しませんでした。

一重引用符、二重引用符、さまざまな種類の連結の組み合わせを使用して数え切れないほどの組み合わせを試しましたが、役に立ちませんでした。

誰かがここで私を助けてくれませんか?

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

4

2 に答える 2

5

KEYmysqlの予約語です

KEY``back ticks' の中に入れた方がよいでしょう 。

ソース(リンク

于 2013-04-08T04:29:50.840 に答える
2

mysql_*新しいコードで 関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です。赤いボックスが見えますか?代わりに準備済みステートメントについて学び、または を使用してください。

さて、質問に:

"UPDATE oc_setting SET value='" . $css . "'" . 'WHERE key="sellya_custom_css"'

このクエリ文字列では、 の前にスペースがありませんWHERE。次のように変更します。

"UPDATE oc_setting SET value='" . $css . "'" . ' WHERE `key`="sellya_custom_css"'

keyクエリでもエスケープする必要があります。

于 2013-04-08T04:29:01.480 に答える