mysql_affected_rows
(PHP 3, PHP 4 )
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()。