mysql_affected_rows
mysql_affected_rows
Get number of affected rows in previous MariaDB operation
Description
int mysql_affected_rows(resource link_identifier= =NULL);
Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE query associated with link_identifier
.
Parameters
link_identifier
-
The MariaDB connection. If the link identifier is not specified, the last link opened by
mysql_connect
is assumed. If no such link is found, it will try to create one as ifmysql_connect
was called with no arguments. If no connection is found or established, anE_WARNING
level error is generated.
Return Values
Returns the number of affected rows on success, and -1 if the last query failed.
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 with MariaDB versions prior to 4.1.2.
When using UPDATE, MariaDB 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.
The REPLACE statement first deletes the record with the same primary key and then inserts the new record. This function returns the number of deleted records plus the number of inserted records.
Examples
Example 20.16. mysql_affected_rows
example
<?php $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 will output something similar to:
Records deleted: 10 Records deleted: 0
Example 20.17. mysql_affected_rows
example using transactions
<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { 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 will output something similar to:
Updated Records: 10
Notes
TransactionsIf you are using transactions, you need to call mysql_affected_rows
after your INSERT, UPDATE, or DELETE query, not after the COMMIT.SELECT Statements
To retrieve the number of rows returned by a SELECT, it is possible to use mysql_num_rows
.Cascaded Foreign Keys
mysql_affected_rows
does not count rows affected implicitly through the use of ON DELETE CASCADE and/or ON UPDATE CASCADE in foreign key constraints.
See Also
mysql_num_rows
|
mysql_info |