发新话题
打印

mysql_affected_rows() 和mysql_num_rows() 的区别

mysql_affected_rows() 和mysql_num_rows() 的区别

mysql_num_rows -- 取得结果集中行的数目说明int mysql_num_rows ( resource result)

mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT,UPDATE 或者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows()
例子 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";

?>



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: 10Records 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


两个最大的区别是,一个参数是记录集,一个是当前连接对象
等我挣了100万我就找个人娶了!哈哈!

TOP

看了

TOP

受教了,又学了一招,谢谢

TOP

我也学到了,说的很好。有时我们就爱犯低级错误!

TOP

谢谢,顶你。。

TOP

又看一次,这些东西看多才知道的更多啊!太好了。很简单的东西就有大道理。

TOP

发新话题