mysqli_affected_rows和mysqli_num_rows有什么区别?

时间:2014-08-28 18:38:09

标签: php mysql mysqli

PHP docs for mysqli_num_rows

  

返回结果集中的行数。

PHP docs for mysqli_affected_rows

  

返回受上一次INSERT,UPDATE,REPLACE或DELETE查询影响的行数。

在结果上调用

_num_rows,并在连接上调用_affected_rows。因为我认为他们做了同样的事情(如果我错了,请纠正这个假设),我想知道一个人是否比另一个更好,以及哪种情况会要求哪个功能。

Aren 影响的行数结果集中的行数同义吗?

3 个答案:

答案 0 :(得分:7)

num_rows告诉您您刚刚使用SELECT查询选择的结果集中有多少行。 affected_rows告诉您多少行受INSERTUPDATEREPLACEDELETE查询影响的行。差别很明显:

$resultSet = mysqli_query($c, 'SELECT ...');
echo mysqli_num_rows($resultSet);

SELECT结果集进入num_rows

mysqli_query($c, 'UPDATE ...');
echo mysqli_affected_rows($c);

没有结果集,没有num_rows

答案 1 :(得分:4)

mysql_affect_rows指的是您使用UPDATE/INSERT查询的行数 并mysql_num_rows计算SELECT语句找到的行数

答案 2 :(得分:0)

我想补充一点,在mysql的最新版本中,这可能已更改。

我最近在寻找差异,发现mysqli_num_rows是的,它计算您的SELECT语句找到了多少行。

mysqli_affected_rows将计算UPDATE/INSERT/DELETE/REPLACE SELECT语句“受影响”的行数。

除非您试图比较SELECT语句中返回的行数与UPDATE/INSERT/DELETE/REPLACE中受影响的行数之间的比较,否则您无需担心要使用的行数。如果要在语义上是正确的,则可以在相应的语句中使用适当的语句。

https://dev.mysql.com/doc/refman/8.0/en/mysql-affected-rows.html

对于SELECT语句,mysql_affected_rows()mysql_num_rows()