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并继续——这是完全正常的行为。