为什么PHP的MySQL库不将affected_rows与查询结果对象相关联?

时间:2012-12-12 11:25:03

标签: php mysqli

我认为这是一个非常直截了当的问题,但我会解释我的想法:

除非我弄错了,受影响的行数始终固有地链接到已执行的查询。类似地,SELECT返回的行数固有地链接到该查询,并且检索该值:

echo $mysql_result_object->num_rows;

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

echo $mysql_connection_object->affected_rows;

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

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

1 个答案:

答案 0 :(得分:0)

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

num_rows对结果集进行操作。因此,它仅对返回结果集的操作有效。即SELECT或SHOW。

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

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

因此,您不能将num_rows用于INSERT,UPDATE,DELETE,但可以使用affected_rows作为SELECT,在这种情况下,它的操作类似于{{1 }}