1

我认为这是一个非常简单的问题,但我将解释我的想法:

除非我弄错了,否则受影响的行数始终与已执行的查询相关联。类似地,SELECT 返回的行数本质上与该查询相关联,并且按如下方式检索值:

echo $mysql_result_object->num_rows;

为什么要从 UPDATE 或 DELETE 语句之类的语句中检索受影响的行,应该通过连接对象访问该值?

echo $mysql_connection_object->affected_rows;

这对我来说似乎不太合乎逻辑。

仅仅是因为查询函数(例如mysqli_query)为 INSERT/UPDATE/DELETE 语句返回布尔值 true 吗?在这种情况下......他们不应该返回一个空的结果对象吗?

4

1 回答 1

0

你几乎回答了你自己的问题,所以我只是在澄清一下。

num_rows对结果集进行操作。因此,它仅对返回结果集的操作有效。即选择或显示。

INSERT、UPDATE 和 DELETE 不返回结果集。回答你的最后一句话;他们不能返回一个空的结果集,因为他们已经返回一个布尔值。

affected_rows将返回与 link_identifier 关联的最后一个查询的受影响行数。

因此,不能num_rows用于 INSERT、UPDATE、DELETE,但可以用于affected_rowsSELECT,在这种情况下,它的操作类似于num_rows.

于 2012-12-12T12:40:29.257 回答