我一直在寻找一个明确的答案,但是互联网上的意见略有不同。
我习惯于将mysqli :: num_rows和mysqli:affected_rows用于预期目的。但是,我在PHP手册中读到,执行选择查询后,受影响的行的行为将类似于num_rows。
我的实际问题是:使用受影响的行并忘记num_rows总是有任何不利之处吗?如果受影响的行的行为类似于num_rows,那么num_rows有什么用?仅使用受影响的行可以简化PHP中的数据库库代码。
答案 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
资源/对象。