繁体   English   中英

我的更新查询出了什么问题?

[英]What's wrong with my update query?

你能告诉我这个更新声明有什么问题吗? 不在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您可以摆脱使用值周围的单引号。

您正在引用您的列名称。 如果你想这样做(这里没有必要),你应该使用反引号:

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

除此之外,您应确保您的变量在sql查询中使用是安全的,最好使用PDO(或mysqli)和预处理语句。 如果你真的想使用不推荐使用的mysql_*函数,你应该使用mysql_real_escape_string()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM