mysql_affected_rows

取得前一次 MySQL 操作所影响的记录行数 (PHP 3, PHP 4, PHP 5)
int mysql_affected_rows ( [resource link_identifier] )

取得最近一次与 link_identifier 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。

参数

link_identifier

MySQL 的连接标识符。如果没有指定,默认使用最后被 mysql_connect() 打开的连接。如果没有找到该连接,函数会尝试调用 mysql_connect() 建立连接并使用它。如果发生意外,没有找到连接或无法建立连接,系统发出 E_WARNING 级别的警告信息。

返回值

执行成功则返回受影响的行的数目,如果最近一次查询失败的话,函数返回 -1。

如果最近一次操作是没有任何条件(WHERE)的 DELETE 查询,在表中所有的记录都会被删除,但本函数返回值在 4.1.2 版之前都为 0。

当使用 UPDATE 查询,MySQL 不会将原值和新值一样的列更新。这样使得 mysql_affected_rows() 函数返回值不一定就是查询条件所符合的记录数,只有真正被修改的记录数才会被返回。

REPLACE 语句首先删除具有相同主键的记录,然后插入一个新记录。本函数返回的是被删除的记录数加上被插入的记录数。

范例

例 1203. mysql_affected_rows() 例子

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
   die(
'Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

/* &#26412;&#20363;&#36820;&#22238;&#34987;&#21024;&#38500;&#35760;&#24405;&#30340;&#20934;&#30830;&#25968;&#30446; */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());

/* &#23545;&#20110;&#38750;&#30495;&#20540;&#30340; WHERE &#23376;&#21477;&#65292;&#24212;&#36820;&#22238; 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n", mysql_affected_rows());
?>

上例的输出类似于:

Records deleted: 10
Records deleted: 0

例 1204. 使用事务处理的 mysql_affected_rows() 例子

<?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");
?>

上例的输出类似于:

Updated Records: 10

注释

事务处理:

如果使用事务处理(transactions),需要在 INSERT,UPDATE 或 DELETE 查询后调用 mysql_affected_rows() 函数,而不是在 COMMIT 命令之后。

SELECT 语句:

要获取 SELECT 所返回的行数,可以用 mysql_num_rows()