我正在尝试通过 MySQL 和 php 更新表中的一些值,但我无法正常工作:这是我的代码:
$update = "UPDATE $table
SET `active`='1' AND `title`='Disabled By Moderator'
WHERE `id`='".$ad_id."' LIMIT 1";
更新多列时,用逗号分隔。
$update = "UPDATE $table SET `active`='1' , `title`='Disabled By Moderator' WHERE `id`='".$ad_id."' LIMIT 1";
它正在更新1
或0
在列active
上的原因是该语句正在执行布尔运算。当前语句中唯一受影响的列是 only column Active
。列title
是布尔运算的一部分。
如果它被分组,您的更新语句将看起来像,
UPDATE $table
SET active = (1 AND (title = 'Disabled By Moderator'))
WHERE id= 'val'
LIMIT 1
作为旁注,SQL Injection
如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。