mysqli_affected_rows和mysqli_num_rows有什么区别?

J-D*_*zle 2 php mysql mysqli

mysqli_num_rowsPHP文档

返回结果集中的行数.

mysqli_affected_rowsPHP文档

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

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

是不是受影响的行数结果中的行数设置的代名词?

dec*_*eze 8

num_rows告诉您刚刚通过SELECT查询选择的结果集中有多少行. affected_rows告诉你有多少行,其中受影响的INSERT,UPDATE,REPLACEDELETE查询.差异很明显:

$resultSet = mysqli_query($c, 'SELECT ...');
echo mysqli_num_rows($resultSet);
Run Code Online (Sandbox Code Playgroud)

SELECT结果集进入num_rows.

mysqli_query($c, 'UPDATE ...');
echo mysqli_affected_rows($c);
Run Code Online (Sandbox Code Playgroud)

没有结果集,没有num_rows.

  • 那么,根据[官方文档](http://php.net/manual/en/mysqli.affected-rows.php),`affected_rows`和`num_rows`为`SELECT`操作返回相同的值 (2认同)