-1

MySQL と php を介してテーブル内のいくつかの値を更新しようとしていますが、うまくいきません: これが私のコードです:

$update = "UPDATE $table 
           SET `active`='1' AND `title`='Disabled By Moderator' 
           WHERE `id`='".$ad_id."' LIMIT 1";
4

1 に答える 1

3

複数の列を更新する場合は、カンマで区切ります。

$update = "UPDATE $table SET `active`='1' , `title`='Disabled By Moderator' WHERE `id`='".$ad_id."' LIMIT 1";

更新中1または0列上にactiveある理由は、ステートメントがブール演算を実行しているためです。現在のステートメントで影響を受ける唯一の列は column のみActiveです。列titleはブール演算の一部です。

グループ化されている場合、更新ステートメントは次のようになります。

UPDATE $table 
SET    active = (1 AND (title = 'Disabled By Moderator'))
WHERE  id= 'val' 
LIMIT  1

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-04-26T17:46:07.650 に答える