0

PHP 文档包含在某些情况下,affected_rows 语句可能返回 0、1、-1 甚至 3 的原因,以及此特定堆栈问题的答案。

PHP / MySQLI:affected_rows 的奇怪读数

但是我碰到的墙是受影响的行返回 NULL。我没有找到当前回答此问题的任何堆栈问题。所以我想出了为什么它会返回NULL。

这是因为您在语法上犯了错误。我倾向于将affected_rows 的使用与num_rows 关联起来。但实际上两者的用法是不同的,这就是我得到特定 NULL 值的原因。

num_rows 用法:

$query = $handler->query("some select query");
$rows = $query->num_rows;

这将返回正确的行数;

受影响的行用法:

$query = $handler->query("some update insert query");
$rows = $query->affected_rows;

这将返回 null 作为$query变量,与以前的变量不同,$query它将返回 true 或 false。因此,在这种情况下,您总是必须调用$handler数据库连接器对象。

这是我刚刚处理的一个问题,现在当我回去查看文档页面时,我发现我完全错过了它。我认为很多人倾向于以与 num_rows 相同的方式对待affected_rows,但这只是我。但我认为,即使这个问题是一个自我回答的问题,它也值得在这里占有一席之地,因为我花了将近 12 个小时才终于做了一个 var_dump 并找到了问题的核心。

如果有人对此有更好的答案,请改进此答案。

问题在于为什么 num_rows 和affected_rows 在这种情况下会受到不同的对待?

4

0 回答 0