Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有两个WHERE子句的MySQL更新查询不起作用?_Mysql_Sql - Fatal编程技术网

有两个WHERE子句的MySQL更新查询不起作用?

有两个WHERE子句的MySQL更新查询不起作用?,mysql,sql,Mysql,Sql,由于某种原因,我的以下查询不起作用: UPDATE accounts SET displayname = 'test', member = '5' WHERE username = 'testuser' AND password = 'testpass'; 但是,请遵守以下工作规定:- UPDATE accounts SET displayname = 'test', member = '5' WHERE username = 'testuser'; 如何基于这两个where子句进行更新

由于某种原因,我的以下查询不起作用:

UPDATE accounts 
SET displayname = 'test', member = '5'
WHERE username = 'testuser' AND password = 'testpass';
但是,请遵守以下工作规定:-

UPDATE accounts 
SET displayname = 'test', member = '5'
WHERE username = 'testuser';

如何基于这两个where子句进行更新查询???

基本上没有与给定查询匹配的行,请检查表的内容。该行中的密码列没有“testpass”

尽量引用保留字,以避免使用“password”等保留字

UPDATE accounts SET displayname = 'test', 
member = '5' WHERE username = 'testuser' 
AND `password` = 'testpass'

我看到您的条件与您的条件查询相匹配。您是否尝试过检查字段的值?检查是否没有空格。

似乎testuser的密码不是testpass。您没有要更新的行,但确实有,下面是一个真实的示例:我认为您使用的是保留字密码。无论如何,请尝试将所有列和表名都用括号括起来,以将其排除在外。更新[accounts]设置[displayname]=“test”、[member]=“5”,其中[username]=“testuser”和[password]=“testpass”我甚至会用倒勾。这就是我的想法,但下面是我尝试过的示例:mysql语法中的错误在mysql中略有不同。保留关键字必须被引用。回答已更新。如果更新语句未更新您的记录,则表示至少有一个条件与您的记录不匹配。此外,如果使用LIKE条件和%通配符更新记录,很可能是这些字段中有空格。我不知道有哪个DBMS使用单引号作为别名。单引号用于字符串文本。根据标准SQL,双引号用于别名。MySQL使用backticksinstead;我不知道双引号是否也有效。@ThorstenKettner你说得对。我把引号和反勾号混淆了。谢谢你的澄清。@user5226582:我想这就是答案。没有匹配项,因为密码字符串中有空格或OP不知道的其他内容。这不是问题的答案,不应出现在答案部分。如果您有足够的权限发表评论,您可以发表其他评论,只要您没有正确和准确的答案,请不要使用回答按钮发表评论