MySQL数据库奇怪地响应更新语句

时间:2018-07-01 19:05:51

标签: mysql sql sql-update

我正在使用MySQL数据库,当我运行以下脚本时,它的行为非常奇怪。当前的行为是...

如果密码正常,它将密码更改为0,但忽略令牌值。

如果密码已经是0,它将仅运行,不执行任何操作,并指出受影响的0行。

如果有人可以给我一个线索,为什么会这样,那太好了。我的SQL是...

UPDATE travisor_tradesperson SET password='123456789' AND token = '' WHERE email='rhamilton469@qub.ac.uk'

3 个答案:

答案 0 :(得分:6)

语法错误。您在set子句中的列用逗号(,而不是(and)隔开:

UPDATE travisor_tradesperson 
SET    password = '123456789', token = ''
-- Here ---------------------^
WHERE  email='rhamilton469@qub.ac.uk'

答案 1 :(得分:3)

关于为什么要这么做 ,因为语法错误(根据其他答案),所以SET

之后的整个部分
password='123456789' AND token = ''

可能被解释为将'123456789' AND token = ''分配到password中。 MySQL可能将此理解为对转换为布尔值的字符串以及比较结果token = ''应用布尔值AND。

答案 2 :(得分:2)

使用逗号分隔列,并且是用于条件语句的运算符,我们可以在where子句之后使用它。

UPDATE travisor_tradesperson 
SET    password = '123456789', token = 'xyz' 
WHERE  email='rhamilton469@qub.ac.uk'