mysql_affected_rows
(PHP 3, PHP 4 )
mysql_affected_rows -- Get number of affected rows in previous
MySQL operation
Description
int mysql_affected_rows ( [resource link_identifier])
mysql_affected_rows() returns the number of rows affected
by the last INSERT, UPDATE or DELETE query associated with
link_identifier. If the link identifier isn't specified,
the last link opened by mysql_connect() is assumed.
Note: If you are using transactions, you need to call mysql_affected_rows()
after your INSERT, UPDATE, or DELETE query, not after the
commit.
If the last query was a DELETE query with no WHERE clause,
all of the records will have been deleted from the table
but this function will return zero.
Note: When using UPDATE, MySQL will not update columns
where the new value is the same as the old value. This creates
the possibility that mysql_affected_rows() may not actually
equal the number of rows matched, only the number of rows
that were literally affected by the query.
mysql_affected_rows() does not work with SELECT statements;
only on statements which modify records. To retrieve the
number of rows returned by a SELECT, use mysql_num_rows().
If the last query failed, this function will return -1.
Example 1. Delete-Query
<?php
/* connect to database */
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
/* this should return the correct numbers of deleted records
*/
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());
/* with a where clause that is never true, it should return
0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n", mysql_affected_rows());
?>
The above example would produce the following output:
Records deleted: 10
Records deleted: 0
Example 2. Update-Query
<?php
/* connect to database */
mysql_connect("localhost", "mysql_user",
"mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
/* Update records */
mysql_query("UPDATE mytable SET used=1 WHERE id <
10");
printf ("Updated records: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>
The above example would produce the following output:
Updated Records: 10
See also mysql_num_rows(), and mysql_info().