首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP MySQL 查詢結果獲取的四種方式深度對比

     編輯:PHP 綜合知識

在早期 PHP 開發中(mysql_* 擴展已棄用,現建議使用 PDO 或 MySQLi),從 MySQL 結果集獲取資料主要有四種函數:mysql_result()、mysql_fetch_row()、mysql_fetch_array()、mysql_fetch_object()。本文通過實例代碼與性能分析,幫助開發者理解各自特點並做出最佳選擇。

1. mysql_result():單元精準提取

<?php
$conn = mysql_connect("localhost", "root", "password");
mysql_select_db("test", $conn);
$query = "SELECT * FROM users";
$result = mysql_query($query, $conn);
for ($i = 0; $i < 7; $i++) {
    echo "用戶ID:" . mysql_result($result, $i, "user_id") . "<br>";
    echo "用戶名:" . mysql_result($result, $i, "user_name") . "<br>";
}
?>

特點:可指定行號與欄位名直接取值,語法直觀。但每次調用都需定位行指針,大數據集下效率極低,不推薦用於批量讀取。

2. mysql_fetch_row():索引陣列,極致速度

<?php
while ($row = mysql_fetch_row($result)) {
    echo "用戶ID:" . $row[0] . "<br>";
    echo "用戶名:" . $row[1] . "<br>";
}
?>

特點:返回數值索引陣列($row[0], $row[1]...),四種方式中執行效率最高。缺點是需記住欄位順序,維護性差,易因表結構變更導致錯誤。

3. mysql_fetch_array():雙模式陣列,實戰首選

<?php
while ($row = mysql_fetch_array($result)) {
    echo "用戶ID:" . $row["user_id"] . "<br>";  // 關聯鍵名
    echo "用戶名:" . $row["user_name"] . "<br>";
    // 同時也可用 $row[0], $row[1]
}
?>

特點:預設返回雙模式陣列(數值索引 + 關聯索引),效能與 mysql_fetch_row() 接近,且支援欄位名訪問,代碼可讀性強,實際項目中最常用。可傳入 MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH 控制返回類型。

4. mysql_fetch_object():物件導向風格

<?php
while ($row = mysql_fetch_object($result)) {
    echo "用戶ID:" . $row->user_id . "<br>";
    echo "用戶名:" . $row->user_name . "<br>";
}
?>

特點:返回 stdClass 物件,屬性對應欄位名。適合物件導向架構,邏輯清晰,處理複雜結構資料時優勢明顯。效能略低於陣列方式,但可忽略不計。

綜合對比與建議

函數返回類型效能適用場景
mysql_result單一值最低極少量、隨機存取
mysql_fetch_row數值索引陣列最高高效能、固定結構、不介意維護成本
mysql_fetch_array雙模式陣列高通用首選,平衡效能與可讀性
mysql_fetch_object物件中高OOP 專案、複雜業務邏輯

現代建議:新專案請使用 PDO 或 MySQLi(預處理語句、物件介面、支援多資料庫),mysql_* 函數自 PHP 5.5 棄用,PHP 7.0 移除。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved