我正在使用MySQL数据库,当我运行以下脚本时,它的行为非常奇怪。当前的行为是...
如果密码正常,它将密码更改为0,但忽略令牌值。
如果密码已经是0,它将仅运行,不执行任何操作,并指出受影响的0行。
如果有人可以给我一个线索,为什么会这样,那太好了。我的SQL是...
UPDATE travisor_tradesperson SET password='123456789' AND token = '' WHERE email='rhamilton469@qub.ac.uk'
答案 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'