2009年3月23日星期一

mysql_num_rows()和mysql_affected_rows()的区别 用途

mysql_num_rows

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_num_rows — 取得结果集中行的数目

说明

int mysql_num_rows ( resource $result )

mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT,UPDATE 或者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows()

Example#1 mysql_num_rows() 例子

<?php

$link 
mysql_connect("localhost""mysql_user""mysql_password"
);
mysql_select_db("database"$link
);

$result mysql_query("SELECT * FROM table1"$link
);
$num_rows mysql_num_rows($result
);

echo 
"$num_rows Rows\n"
;

?>

Note: 如果使用 mysql_unbuffered_query(),则直到结果集中的所有行都被提取后 mysql_num_rows() 才能返回正确的值。

参见 mysql_affected_rows()mysql_connect()mysql_data_seek()mysql_select_db()mysql_query()

为向下兼容仍然可以使用 mysql_numrows(),但反对这样做。

http://cn.php.net/manual/zh/function.mysql-num-rows.php

mysql_affected_rows

(PHP 4, PHP 5, PECL mysql:1.0)

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

说明

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 语句首先删除具有相同主键的记录,然后插入一个新记录。本函数返回的是被删除的记录数加上被插入的记录数。

http://cn.php.net/manual/zh/function.mysql-affected-rows.php

 

没有评论: