What is the difference between mysqli_affected_rows and mysqli_num_rows?

The PHP docs for mysqli_num_rows says

Returns the number of rows in the result set.

The PHP docs for mysqli_affected_rows says

Returns the number of rows affected by the last INSERT, UPDATE, REPLACE or DELETE query.

_num_rows is called on a result, and _affected_rows is called on a connection. Since I think they do the same thing(correct this assumption if I'm wrong), I'm wondering whether one works better than the other, and which situations would call for which function.

Aren't number of rows affected and number of rows in the result set synonymous?

Answer1:

num_rows tells you how many rows there are in the result set you just selected with a SELECT query. affected_rows tells you how many rows where affected by an INSERT, UPDATE, REPLACE or DELETE query. The difference is obvious:

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

SELECT result set goes into num_rows.

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

No result set, no num_rows.

Answer2:

mysql_affect_rows counts on how many rows your UPDATE/INSERT query was used and mysql_num_rows counts how many rows your SELECT statement found

人吐槽 人点赞

Recommend

Comment

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:What is the difference between mysqli_affected_rows and mysqli_num_rows?