日期:2014-05-16  浏览次数:20980 次

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

本文转载自:?? http://blog.csdn.net/militala/article/details/5996510

?

?

mysql_affected_rows() 返回最近一次与 连接句柄 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数.FOUND_ROWS() : select ROW_COUNT() : update delete insert.

?

?

?

FOUND_ROWS() : select
ROW_COUNT()? : update delete insert.

?

MYSQL的函数中,SELECT是另外一个单独的函数 FOUND_ROWS() , UPDATE等是 ROW_COUNT()

?

如下案例:

?

  1. mysql>?INSERT?INTO?t?VALUES(1),(2),(3); ?
  2. Query?OK,?3?rows?affected?(0.00?sec) ?
  3. Records:?3??Duplicates:?0??Warnings:?0 ?
  4. ?
  5. mysql>?SELECT?ROW_COUNT(); ?
  6. +-------------+ ?
  7. |?ROW_COUNT()?| ?
  8. +-------------+ ?
  9. |???????????3?| ?
  10. +-------------+ ?
  11. 1?row?in?set?(0.00?sec) ?
  12. ?

?

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 操作

?

?

?

  1. <?php ?
  2. ????/*?连接数据库?*/?
  3. ????mysql_pconnect("localhost",?"mysql_user",?"mysql_password")?or?
  4. ?????????die?("Could?not?connect"?.?mysql_error()); ?
  5. ????mysql_select_db("mydb"); ?
  6. ?
  7. ????/*?这会返回有效的被删除记录数。?*/?
  8. ????mysql_query("DELETE?FROM?mytable?WHERE?id?<?10"); ?
  9. ????printf?("Records?deleted:?%d/n",?mysql_affected_rows()); ?
  10. ?
  11. ????