使用 MySQL 的 UPDATE 语句修改数据时,可能会遇到错误“不正确使用 UPDATE 和 LIMIT” ”。当您尝试在多表更新操作中将 UPDATE 语句与 ORDER BY 或 LIMIT 子句组合时,会出现此错误。
在提供的代码片段中,UPDATE 语句尝试根据具体情况修改users表及其相关的contact_info表。但是,它还包含 LIMIT 1 子句,在这种情况下是不允许的。
MySQL 文档明确指出,对于多表 UPDATE 操作,ORDER BY 和 LIMIT不能使用。这是因为 UPDATE 语句需要更新连接表中的所有匹配行,而将更新限制为特定行数可能会导致意外结果。
要解决此错误,只需删除 LIMIT 1 子句即可从你的 UPDATE 语句中。更新后的代码将如下所示:
$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "')"; $r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));
此修改后的代码将按预期执行更新操作,对匹配行数没有任何限制。
以上是为什么我的 MySQL UPDATE 语句抛出'更新和限制的错误使用”?的详细内容。更多信息请关注PHP中文网其他相关文章!