PHP4、PHP5中可用。获得在之前的MySQL操作中受到影响的行数。

函数声明

int mysql_affected_rows ([ resource $link_identifier ] )
返回相关连接中在最后一次插入、更新、替换或删除时受到影响的行数。

参数

link_identifier
MySQL连接。如果没有指定该参数,将被认为是最后一个被mysql_connect()打开的连接。如果没有被打开的连接将会试图使用无参数的mysql_connect()新建一个。如果碰巧没有找到或者新建立连接,将会产生一个E_WARNNING级别的警告。

返回值

返回在之前的MySQL操作中受到影响的行数;如果最后一次操作失败返回-1。
如果最后一次数据库查询是一次没有指定范围的删除查询,所有的记录都将被删除,但是在4.1.2之前的MySQL版本中该函数将会返回0。
当更新数据时,MySQL不会更新新数据和旧数据一样的栏目。这将产生这样一种可能,那就是mysql_affected_rows()可能不会真的等于所操作的行数,仅等于真正修改过和行数。
替换操作要先删除和关键字相同的记录,然后插入新的记录。这个函数会返回删除的记录个数加上插入的记录个数。

示例

Example #1 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: %dn”, 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: %dn”, mysql_affected_rows());
?>

这个例子将会输出:
Records deleted: 10
Records deleted: 0

Example #2 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: %dn”, mysql_affected_rows());
mysql_query(“COMMIT”);
?>

这个例子输出:
Updated Records: 10

注意

Transactions
如果你使用了transactions,你需要在你插入、更新或删除之后调用mysql_affected_rows() ,而不是在COMMIT之后。

SELECT Statements
要检索由SELECT返回的行,可以使用mysql_num_rows()。

同样请看:

* mysql_num_rows() – 返回查询结果的行数。
* mysql_info() – 获得最近一次查询的相关信息。

原文:http://www.php.net/manual/en/function.mysql-affected-rows.php

Related posts:

  1. mysql_connect
  2. mysql_num_rows
  3. mysql_create_db
  4. mysql_close
  5. mysql_db_query