Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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
PHP/MySQL:更新不存在的列值_Php_Mysql - Fatal编程技术网

PHP/MySQL:更新不存在的列值

PHP/MySQL:更新不存在的列值,php,mysql,Php,Mysql,因此,这个查询: mysql_query("UPDATE item SET name = 'foo' WHERE name = 'bar'"); 返回1,但表中不存在值“bar”。正如预期的那样,数据库本身没有任何变化,但mysql_query()在这种情况下不应该返回0吗?它返回true,因为查询已成功执行。如果您想知道更新了多少行,必须使用mysql\u受影响的行如果您只是回显mysql\u查询的值,那么它将是true或false。您需要使用mysql\u infected\u rows(

因此,这个查询:

mysql_query("UPDATE item SET name = 'foo' WHERE name = 'bar'");

返回1,但表中不存在值“bar”。正如预期的那样,数据库本身没有任何变化,但mysql_query()在这种情况下不应该返回0吗?

它返回
true
,因为查询已成功执行。如果您想知道更新了多少行,必须使用
mysql\u受影响的行

如果您只是回显mysql\u查询的值,那么它将是true或false。您需要使用
mysql\u infected\u rows()
来获取实际受影响的行。

为什么,否。查询本身是成功的,即它是一个有效的查询,并且已成功执行。它只是不适用于任何行。

但它不应该失败,因为它应该在表中查找的值不存在吗?不,它是一个有效的查询,因此返回true。
更新。。。其中
表示“更新任何存在的错误”,而不是“如果不存在则更新并生成错误”。请考虑一个
选择。。。其中
不匹配任何记录:查询没有失败,只找到零条匹配记录。是的,查询有效。你说的是“更新每一个名为foo的行,使其具有名称栏”。没有名为foo的列,所以mysql很高兴什么都不做。它仍然会检查所有列,并确保没有一个列被命名为foo并继续——这是完全正常的行为。