mysql_affected_rows

(PHP 4, PHP 5)

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

警告

本擴(kuò)展自 PHP 5.5.0 起已廢棄,并在自 PHP 7.0.0 開(kāi)始被移除。應(yīng)使用 MySQLiPDO_MySQL 擴(kuò)展來(lái)替換之。參見(jiàn) MySQL:選擇 API 指南來(lái)獲取更多信息。用以替代本函數(shù)的有:

說(shuō)明

mysql_affected_rows(resource $link_identifier = NULL): int

取得最近一次與 link_identifier 關(guān)聯(lián)的 INSERT,UPDATE 或 DELETE 查詢(xún)所影響的記錄行數(shù)。

參數(shù)

link_identifier

MySQL 連接。如不指定連接標(biāo)識(shí),則使用由 mysql_connect() 最近打開(kāi)的連接。如果沒(méi)有找到該連接,會(huì)嘗試不帶參數(shù)調(diào)用 mysql_connect() 來(lái)創(chuàng)建。如沒(méi)有找到連接或無(wú)法建立連接,則會(huì)生成 E_WARNING 級(jí)別的錯(cuò)誤。

返回值

執(zhí)行成功則返回受影響的行的數(shù)目,如果最近一次查詢(xún)失敗的話(huà),函數(shù)返回 -1。

如果最近一次操作是沒(méi)有任何條件(WHERE)的 DELETE 查詢(xún),在表中所有的記錄都會(huì)被刪除,但本函數(shù)返回值在 4.1.2 版之前都為 0。

當(dāng)使用 UPDATE 查詢(xún),MySQL 不會(huì)將原值和新值一樣的列更新。這樣使得 mysql_affected_rows() 函數(shù)返回值不一定就是查詢(xún)條件所符合的記錄數(shù),只有真正被修改的記錄數(shù)才會(huì)被返回。

REPLACE 語(yǔ)句首先刪除具有相同主鍵的記錄,然后插入一個(gè)新記錄。本函數(shù)返回的是被刪除的記錄數(shù)加上被插入的記錄數(shù)。

"INSERT ... ON DUPLICATE KEY UPDATE" 這種情況的查詢(xún),當(dāng)執(zhí)行了一次 INSERT 返回的值會(huì)是 1;如果是對(duì)已經(jīng)存在的記錄執(zhí)行一次 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');

/* 本例返回被刪除記錄的準(zhǔn)確數(shù)目 */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n"mysql_affected_rows());

/* 對(duì)于非真值的 WHERE 子句,應(yīng)返回 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n"mysql_affected_rows());
?>

以上例程的輸出類(lèi)似于:

Records deleted: 10
Records deleted: 0

示例 #2 使用事務(wù)處理的 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");
?>

以上例程的輸出類(lèi)似于:

Updated Records: 10

注釋

注意: 事務(wù)處理

如果使用事務(wù)處理(transactions),需要在 INSERT,UPDATE 或 DELETE 查詢(xún)后調(diào)用 mysql_affected_rows() 函數(shù),而不是在 COMMIT 命令之后。

注意: SELECT 語(yǔ)句

要獲取 SELECT 所返回的行數(shù),可以用 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.

參見(jiàn)