你能告诉我这个更新语句有什么问题吗?不更新mysql中的db记录

$updateid = $row[id];

$result2 = mysql_query("UPDATE grades SET processed = 1
where 'id' = '$updateid'") or die(mysql_error());

最佳答案

ColumnNames(以及TableName)不应该用单引号括起来,因为它们是标识符,而不是字符串文本。用单引号括住标识符使其成为字符串文字。

UPDATE grades
SET processed = 1
where id = '$updateid'

如果您不确定正在使用的columnName(或TableName)是否为保留关键字,请使用反勾号而不是单引号对其进行分隔。如,
UPDATE `grades`
SET `processed` = 1
where `id` = '$updateid'

另一方面,如果变量的值来自外部,则查询易受SQL Injection攻击。请看下面的文章,学习如何预防。通过使用PreparedStatements可以去掉在值周围使用单引号。
How to prevent SQL injection in PHP?
When to use single quotes, double quotes, and backticks in MySQL

关于php - 我的更新查询出了什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15366398/

10-12 01:05