【问题标题】:What is the difference between mysqli_affected_rows and mysqli_num_rows?mysqli_affected_rows 和 mysqli_num_rows 有什么区别?
【发布时间】:2014-08-28 18:38:08
【问题描述】:

PHP docs for mysqli_num_rows

返回结果集中的行数。

PHP docs for mysqli_affected_rows

返回受最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询影响的行数。

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

受影响的行数结果集中的行数不是同义词吗?

【问题讨论】:

  • 在简单检查查询是否成功的情况下(... if($con->___rows > 0){}),我发现 mysqli_num_rows 更直接。由于 _num_rows 适用于插入,这与受影响的行有何不同?任何结果集都不会包含“受影响”的行吗?

标签: php mysql mysqli


【解决方案1】:

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

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

SELECT 结果集进入num_rows

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

没有结果集,没有num_rows

【讨论】:

  • 抱歉删除我的评论我将它编辑到问题中,这使您删除了您的评论。你说的关键点是 mysqli_query 只为 SELECT 查询返回一个 mysqli_result 类型的对象......所以它们不能互换使用!
  • 好吧,根据the official docaffected_rowsnum_rowsSELECT操作返回相同的值
【解决方案2】:

mysql_affect_rows 计算您的UPDATE/INSERT 查询使用了多少行 和mysql_num_rows 计算您找到的SELECT 语句的行数

【讨论】:

  • 我觉得你的回答没有“等”会更好。因为“等”可以包括 SELECT
  • 但我也可以使用mysql_num_rows 来计算插入影响的行数
  • @J-Dizzle 你真的可以吗?由于 mysqli_num_rows 需要 mysqli_result 参数,而您只能在 SELECT 查询中获得该参数,我不知道如何。
  • 我想我不能……但是如何验证插入是否成功?
  • 您可以尝试检索“最后插入的 ID”:dev.mysql.com/doc/refman/5.0/en/…
【解决方案3】:

我想补充一下,在最近的 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()一样工作

【讨论】:

  • 可以,但不能使用mysql_num_rows 获取受影响的行数。
  • 我意识到这一点。这个事实可以从其他答案中推断出来。我只是补充了一个事实,即affected_rows 是所有UPDATE/INSERT/DELETE/REPLACE SELECT 语句的同义词,而不是只是前面的答案所述的前四个。是否可以在 SELECT 语句上使用 affected_rows 并不是很清楚。
猜你喜欢
  • 2016-12-23
  • 2010-10-02
  • 2011-12-12
  • 2010-09-16
  • 2012-03-14
  • 2012-02-06
  • 2011-02-25
  • 2011-11-22
  • 2015-03-26
相关资源
最近更新 更多