取得前一次 MySQL 操作所影響的記錄行數

mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rows取得前一次 MySQL 操作所影響的記錄行數

警告

本擴充套件自 PHP 5.5.0 起已廢棄,並在自 PHP 7.0.0 開始被移除。應使用 MySQLiPDO_MySQL 擴充套件來替換之。參見 MySQL:選擇 API 指南來獲取更多資訊。用以替代本函式的有:

說明

mysql_affected_rows(resource $link_identifier = NULL): int

取得最近一次與 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 語句首先刪除具有相同主鍵的記錄,然後插入一個新記錄。本函式返回的是被刪除的記錄數加上被插入的記錄數。

"INSERT ... ON DUPLICATE KEY UPDATE" 這種情況的查詢,當執行了一次 INSERT 返回的值會是 1;如果是對已經存在的記錄執行一次 UPDATE 將返回 2

範例

示例 #1 mysql_affected_rows() 例子

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    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 WHERE 0');
printf("Records deleted: %d\n"mysql_affected_rows());
?>

以上例程的輸出類似於:

Records deleted: 10
Records deleted: 0

示例 #2 使用事務處理的 mysql_affected_rows() 例子

<?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: %d\n"mysql_affected_rows());
mysql_query("COMMIT");
?>

以上例程的輸出類似於:

Updated Records: 10

註釋

注意: 事務處理

如果使用事務處理(transactions),需要在 INSERT,UPDATE 或 DELETE 查詢后呼叫 mysql_affected_rows() 函式,而不是在 COMMIT 命令之後。

注意: SELECT 語句

要獲取 SELECT 所返回的行數,可以用 mysql_num_rows()

注意: Cascaded 外來鍵

mysql_affected_rows() does not count rows affected implicitly through the use of ON DELETE CASCADE and/or ON UPDATE CASCADE in foreign key constraints.

參見

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *