0

以下の MySQL クエリは、そのままでも問題なく動作します。votes_upこれは、MySQL データベースのフィールドを変数の値に置き換えます$votes_up

UPDATE submission 
   SET votes_up = $votes_up 
 WHERE submissionid = $id

flag1ただし、 というフィールドを という変数の値で同時に置換する 2 番目の条件を追加しようとすると$uflag、エラー メッセージが表示されます。これに使用しようとしているクエリは以下のとおりです。Unknown column 'admin' in 'field list'の値$uflagが「admin」であるかどうかを示すエラー メッセージが表示されます。また、 の値が$uflagデータベースに入れられていません。このエラーが発生する理由はありますか?

UPDATE submission
   SET votes_up = $votes_up, 
       flag1 = $uflag 
 WHERE submissionid = $id
4

3 に答える 3

3

文字列値に引用符を追加する必要があります。

UPDATE submission 
SET votes_up = $votes_up, flag1 = $uflag 
WHERE submissionid = $id

次のようにする必要があります。

UPDATE submission 
SET votes_up = $votes_up, flag1 = '$uflag' 
WHERE submissionid = $id
于 2010-11-16T16:57:04.470 に答える
0

クエリに問題があります。まず、次を試してください。

UPDATE submission SET votes_up = '$votes_up', flag1 = '$uflag' WHERE submissionid = $id

それでもうまくいかない場合は、クエリを印刷してコンソールで実行してみてください。

于 2010-11-16T16:58:15.690 に答える
0

値を引用符で囲み、エスケープする必要があります。

$sql = '
    UPDATE submission
    SET votes_up = "'.mysql_real_escape_string($votes_up).'",
        flag1 = "'.mysql_real_escape_string($uflag).'"
    WHERE submissionid = "'.mysql_real_escape_string($id).'"
';

他の変数で機能する理由は、数値の引用符は必要ありませんが、巨大なセキュリティ ホールが開いているためです。

于 2010-11-16T16:59:08.420 に答える