首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP 讀取 MySQL 三種遍歷方式對比:mysql_fetch_row / object / array 性能與用法詳解

     編輯:MySQL 資料庫相關知識

基礎連接代碼(公共部分)

<?php
$dbh = @mysql_connect("localhost:3306", "root", "000000");
if (!$dbh) die("Connect Error");
@mysql_select_db("ok", $dbh);
$q = "SELECT * FROM abc";
?>

方法一:mysql_fetch_row() —— 數字索引數組,速度中等

<?php
$rs = mysql_query($q, $dbh);
if (!$rs) die("Query Error");
echo "<table><tr><td>ID</td><td>Name</td></tr>";
while ($row = mysql_fetch_row($rs)) {
    echo "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}
echo "</table>";
?>
  • 返回純數字索引數組(0,1,2...),順序對應 SELECT 列順序。
  • 列順序變更時代碼易出錯,維護性較差。

方法二:mysql_fetch_object() —— 對象屬性訪問,語義清晰

<?php
$rs = mysql_query($q, $dbh);
while ($row = mysql_fetch_object($rs)) {
    echo "$row->id $row->name <br />";
}
?>
  • 返回對象,屬性名 = 列名(或別名),代碼可讀性強。
  • 僅支持屬性訪問,不支持數字下標。

方法三:mysql_fetch_array() —— 雙模式,綜合性能最優

<?php
$rs = mysql_query($q, $dbh);
while ($row = mysql_fetch_array($rs)) {
    echo "$row[id] $row[name] <br />";
}
?>
  • 默認返回同時包含數字索引與關聯鍵名的混合數組(MYSQL_BOTH)。
  • 可通過第二參數控制:MYSQL_NUM(僅數字)、MYSQL_ASSOC(僅關聯)、MYSQL_BOTH(默認)。
  • 實測最快,兼具靈活性與性能,推薦作為首選。

收尾:釋放資源與關閉連接

<?php
mysql_free_result($rs);  // 釋放結果集內存
mysql_close($dbh);       // 關閉非持久連接
?>

⚠️ 重要提示

mysql_* 系列函數自 PHP 5.5.0 棄用,PHP 7.0.0 移除。新項目請使用 mysqli 或 PDO_MySQL(支持預處理、事務、面向對象、更安全)。

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