mysql_affected_rows 函式

PHP mysql_affected_rows 函式可以用來統計"前一次"執行 MySQL 語法所影響的記錄行數,可以統計的項目包含 INSERT、UPDATE、DELETE 等動作,與 mysql_affected_rows 類似的函式為 mysql_num_rows,但 mysql_num_rows 僅能統計 SELECT 結果集的行數。

PHP mysql_affected_rows 函式語法
int mysql_affected_rows ( resource )
語法中的 resource 即為前一次或最近一次執行的 MySQL 語法,若無執行 MySQL 而使用 mysql_affected_rows 函式,則此函式會自動調用 mysql_connect 來執行,當無法建立 MySQL 連接或找不到 MySQL 連接,會產生 E_WARNING 級別的錯誤,反之,若順利統計出 MySQL 語法所影響的行數,就返回一個整數(int)。

僅管 mysql_affected_rows 函式用在統計 MySQL 語法影響的行數非常好用,但此函式在 PHP 5.5.0 版本已經被廢棄,並且在未來將會被移除,所以若使用的 PHP 版本為 5.5.0 或更新的版本,需改用 PHP 官方所提供的替代函式,以下兩個函式即為替代函式。
  • mysqli_affected_rows
  • PDOStatement::rowCount
PHP mysql_affected_rows 函式範例
<?php
$mysql_link = mysql_connect('localhost', 'UserName', 'Password');
if (!$mysql_link) {
 die('無法連接資料庫: ' . mysql_error());
}
echo 'Affected rows num: '.mysql_affected_rows();
以上範例輸出
Affected rows num: 0
範例一開始用 mysql_connect 建立了一個資料庫連接,若沒有建立連接,可能會出現以下錯誤訊息
Warning: mysql_affected_rows() [function.mysql-affected-rows]: A link to the server could not be established in ...
既然 MySQL 的連接建立完成,就讓範例在完全沒有進行 DELETE、UPDATE、INSERT 等動作的情況下,直接採用mysql_affected_rows 函式來統計,最終因為沒有任何的影響行數,就返回整數 0 這樣的結果。

延伸閱讀
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012
PHP Smarty MySQL JQuery Apache W3C