0

データベースのフィールドを更新する PHP スクリプトで MySQL を記述しようとしていますが、エラーが発生します。

Fatal error: Wrong SQL: Error: 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 ''user' SET 'currentsong' = '' WHERE 'userid' = '1893'' 

このコードを使用している間。

$setcurrentsongsql = "UPDATE 'user' SET 'currentsong' = '$currentsong' WHERE 'userid' = '$sql1'";
$setcurrentsong = $db->query($setcurrentsongsql);

それは単純なことだと確信していますが、私は完全に困惑しています。変数を通常の文字列に置き換えても機能しません。

よろしくお願いします。

4

2 に答える 2

8

テーブル名と列名には、一重引用符ではなくバック ティックを使用します。次のことを試してください。

$setcurrentsongsql = "UPDATE `user` SET `currentsong` = '$currentsong' WHERE `userid` = '$sql1'";

MySQL では、識別子の引用文字はバックティック " ` " です。この短いページで、スキーマの規則、識別子などをよく理解できます: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

于 2013-07-31T22:33:45.343 に答える
3

mySQL は、`列名とテーブル名にバックティックを使用し、'文字列定数にアポストロフィを使用します。ただし、予約済みのキーワード(テーブルが実際には「テーブル」と呼ばれるなど) を使用していないか、テーブルまたは列の名前にスペースが含まれていない限り (「my テーブル」など)、これらは必要ありません。

以下を使用できます。

$setcurrentsongsql = "UPDATE `user` SET `currentsong` = '$currentsong' WHERE `userid` = '$sql1'";

または:

$setcurrentsongsql = "UPDATE user SET currentsong = '$currentsong' WHERE userid = '$sql1'";

また、信頼できないソースからのものである場合は、 SQL インジェクション$currentsongについて心配する必要があるかもしれません。

于 2013-07-31T22:37:54.593 に答える