PHP Manual
后退 |  | 前进

# mysql_affected_rows

(PHP 3, PHP 4, PHP 5)

mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数

## 说明

int mysql_affected_rows ( [resource link_identifier] )

mysql_affected_rows() 返回最近一次与 连接句柄 关联的 INSERT，UPDATE 或 DELETE 查询所影响的记录行数。如果连接句柄没有指定， 则默认使用最近一次由 mysql_connect() 函数打开的连接句柄。

> 注: 如果你使用事务处理（transactions），你需要在 INSERT，UPDATE 或 DELETE 查询后调用 mysql_affected_rows() 函数，而不是在 commit 命令之后。

如果最近一次操作是没有任何条件（WHERE）的 DELETE 查询， 在表中所有的记录都会被删除，但该函数返回值为 0。

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

mysql_affected_rows() 函数不适用于 SELECT 语句；只适用于能够修改记录的语句中。请使用 mysql_num_rows() 函数来获得 SELECT 所返回的记录行数。

如果最近一次查询失败的话，函数返回 -1。

例子 1. Delete 操作

`<?php
/* 连接数据库 */
mysql_pconnect("localhost", "mysql_user", "mysql_password") or
die ("Could not connect" . mysql_error());
mysql_select_db("mydb");
/* 这会返回有效的被删除记录数。 */
mysql_query("DELETE FROM mytable WHERE id < 10");
printf ("Records deleted: %d\n", mysql_affected_rows());
/* 没有任何条件（where）的删除语句，返回 0 */
mysql_query("DELETE FROM mytable");
printf ("Records deleted: %d\n", mysql_affected_rows());
?>`

以上的例子会得出下面的运行结果：

    Records deleted: 10
    Records deleted: 0

例子 2. Update 操作

`<?php /* 连接数据库 */ mysql_pconnect("localhost", "mysql_user", "mysql_password") or die ("Could not connect" . mysql_error()); mysql_select_db("mydb"); /* Update 记录 */ mysql_query("UPDATE mytable SET used=1 WHERE id < 10"); printf ("Updated records: %d\n", mysql_affected_rows()); mysql_query("COMMIT"); ?>`

以上的例子会得出下面的运行结果：

    Updated Records: 10

参见 mysql_num_rows() 和 mysql_info()。

后退 | 起点 | 前进
MySQL 函数库 | 上一级 | mysql_change_user