Mysql 如何在UPDATE语句中使用if/else

Mysql 如何在UPDATE语句中使用if/else,mysql,Mysql,这是我目前的问题 UPDATE `records` SET tester1 = '$user', tester1yn = '$pass' 我想把这个改成 UPDATE `records` SET IF `tester1` IS NULL `tester1` = $user, AND `test1` = $pass ELSE `tester2` = $user, `tester1yn` = '$pass' WHERE `id` = $id 但在我看来,这是行不通的。我是有一个嵌套问题,还是我

这是我目前的问题

UPDATE `records` SET tester1 = '$user', tester1yn = '$pass' 
我想把这个改成

UPDATE `records` SET
IF `tester1` IS NULL `tester1` = $user, AND `test1` = $pass
ELSE `tester2` = $user, `tester1yn` = '$pass'
WHERE `id` = $id
但在我看来,这是行不通的。我是有一个嵌套问题,还是我走错了方向

根据反馈进行更新

UDPATE records SET 
tester1 = if(tester1 IS NULL,'$user',tester1), 
tester1yn = if(tester1 is null, '$pass', tester1yn), 
tester2 = IF(tester1 is not null, '$user', tester2), 
tester2yn = IF(tester1 is not null,'$pass', tester2yn) 
where id = $id

尽管在SQL中是可行的,但这种逻辑不应该发生在数据库级别。用户的登录、身份验证和管理(这似乎是您所追求的)应该在您的代码中完成。

虽然在SQL中是可行的,但这种逻辑不应该发生在数据库级别。用户的登录、身份验证和管理(这似乎是您所追求的)应该在您的代码中完成。

您有点朝着错误的方向前进,尽管这种逻辑应该在下一个布局中完成(在我看来)

尝试:


你有点走错方向了,虽然这个逻辑应该在下一个布局中出现(在我看来)

尝试:


我没有测试这一点,所以不要强迫我,但这应该为你指明正确的方向:

UPDATE records 
SET 
    tester1 = CASE WHEN tester1 IS NULL THEN '$user' ELSE tester1 END,
    test1 = CASE WHEN tester1 IS NULL THEN '$pass' ELSE test1 END,
    tester2 = CASE WHEN tester1 IS NOT NULL THEN '$user' ELSE tester2 END,
    tester2yn = CASE WHEN tester1 IS NOT NULL THEN '$pass' ELSE tester2yn END
WHERE
    id = $id

我没有测试这一点,所以不要强迫我,但这应该为你指明正确的方向:

UPDATE records 
SET 
    tester1 = CASE WHEN tester1 IS NULL THEN '$user' ELSE tester1 END,
    test1 = CASE WHEN tester1 IS NULL THEN '$pass' ELSE test1 END,
    tester2 = CASE WHEN tester1 IS NOT NULL THEN '$user' ELSE tester2 END,
    tester2yn = CASE WHEN tester1 IS NOT NULL THEN '$pass' ELSE tester2yn END
WHERE
    id = $id

靠猜测编程是行不通的。阅读MySQL文档,了解其功能。请注意,查询是单个声明性语句,而不是过程函数。这可能是MySQL注入的一个经典示例,请参阅:MySQL文档中的(提示:使用表达式的结果)。然后继续读下去,我对MySQL注入没有任何恐惧。整个项目从一开始就是一个肮脏的黑客行为。靠猜测编程是行不通的。阅读MySQL文档,了解其功能。请注意,查询是单个声明性语句,而不是过程函数。这可能是MySQL注入的一个经典示例,请参阅:MySQL文档中的(提示:使用表达式的结果)。然后继续读下去,我对MySQL注入没有任何恐惧。整个项目从一开始就是一个非常肮脏的黑客。更新到现在仍然不起作用。我在我所有的php变量周围添加了“'”,开始时,我必须切换测试顺序以使其正常工作。更新到这个位置,put仍然不工作。我在所有php变量周围添加了“'”,从$which开始,我必须切换测试顺序以使其正常工作。