进行SELECT时,mysqli :: num_rows和mysqli :: affected_rows之间是否有真正的区别?

时间:2018-12-11 13:39:39

标签: php mysqli

我一直在寻找一个明确的答案,但是互联网上的意见略有不同。

我习惯于将mysqli :: num_rows和mysqli:affected_rows用于预期目的。但是,我在PHP手册中读到,执行选择查询后,受影响的行的行为将类似于num_rows。

我的实际问题是:使用受影响的行并忘记num_rows总是有任何不利之处吗?如果受影响的行的行为类似于num_rows,那么num_rows有什么用?仅使用受影响的行可以简化PHP中的数据库库代码。

1 个答案:

答案 0 :(得分:1)

与表相关的记录有两种类型的操作(不是表结构):

1)Select:当您仅从表中获取数据时。

2)Update:更新表记录(Insert/Update/Delete)时,所有这些操作都会更新/更改表记录。

如果运行选择查询,num_rows将起作用,因为它返回行数。但是,当您运行Insert/Update/Delete查询时,affected_rows将起作用,因为它返回受Insert/Update/Delete查询影响的行数。

此外,当您运行Insert/Update/Delete查询时,Mysql服务器将返回受影响的行。 PHP函数受影响的行直接使用连接资源/对象转换此响应。但是,当您运行选择查询时,mysql服务器将返回结果集。通过使用此结果,PHP函数num_rows返回该result set has how many rows。对于affected_rows,我们正在使用连接资源/对象;对于num_rows,我们正在使用result资源/对象。