你能告诉我这个更新声明有什么问题吗?没有更新我的数据库记录在MySQL我的更新查询有什么问题?
$updateid = $row[id];
$result2 = mysql_query("UPDATE grades SET processed = 1
where 'id' = '$updateid'") or die(mysql_error());
你能告诉我这个更新声明有什么问题吗?没有更新我的数据库记录在MySQL我的更新查询有什么问题?
$updateid = $row[id];
$result2 = mysql_query("UPDATE grades SET processed = 1
where 'id' = '$updateid'") or die(mysql_error());
ColumnNames
(以及表名)不应与单引号,因为他们是标识符,而不是字符串文字括起来。用单引号包装标识符使其成为字符串。
UPDATE grades
SET processed = 1
where id = '$updateid'
如果你不确定,如果你使用的是列名(或表名)是保留关键字,用反引号,而不是单引号界定它。例如,
UPDATE `grades`
SET `processed` = 1
where `id` = '$updateid'
作为旁注,查询是用SQL Injection
脆弱,如果变量的值(小号)从外部来了。请看下面的文章,了解如何防止它。通过使用PreparedStatements
你可以摆脱使用单引号围绕值。
您引用您的列名。如果你想这样做(这是没有必要在这里),你应该使用反引号:
$result2 = mysql_query("UPDATE grades SET processed = 1
where `id` = '$updateid'") or die(mysql_error());
除此之外,你应该确保你的变量是安全的在SQL查询中使用,最好使用PDO(或mysqli的)并准备了陈述。如果您确实想使用已弃用的mysql_*
函数,则应使用mysql_real_escape_string()
。
为了确保变量被解析,你是不是应该使用双引号:'where''id'' =“$ updateid”'或者''''“。 $ updatedid。 “”“' – 2013-03-12 16:29:19