我怎样才能纠正这个问题,使我的MySQL代码正常工作。
下面是我的MySQL代码,它解决了这个问题。
$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) . "') LIMIT 1";
$r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));
发布于 2019-04-17 15:34:19
@Marc B提供了update
通常不能与limit
一起工作的原因。
@Roopchand也提供了一个解决方案。
对于像我这样试图避免关闭safe update mode
的人来说
https://stackoverflow.com/a/28316067/1278112
这个答案很有帮助。它给出了一个例子
UPDATE customers SET countryCode = 'USA‘WHERE country = 'USA';--这会给出错误,您只需编写:
UPDATE customers SET countryCode =‘SET’WHERE (country =‘SET’AND customerNumber <> 0);--因为customerNumber是主键,所以不再出现错误1175。
当我使用多表语法面对update
时,它也起作用了。
我想要什么,但会引发错误代码1175。
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
t1.name = t2.name;
工作版
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
(t1.name = t2.name and t1.prime_key !=0);
这真的很简单和优雅。由于最初的答案没有得到太多的关注(投票),我发布了更多的解释。希望这能帮助到其他人。
https://stackoverflow.com/questions/4291833
复制相似问题