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

PHP 連接 MySQL 讀取資料的三種擷取方式比較

     編輯:PHP 綜合知識

早期 PHP 使用 mysql_* 函式庫操作 MySQL(已於 PHP 7.0 移除,現建議使用 mysqli 或 PDO),但其結果集擷取模式仍具參考價值。本文展示三種常見方式:mysql_fetch_row()(數值索引陣列)、mysql_fetch_object()(物件)、mysql_fetch_array()(關聯/數值雙索引陣列)。

資料庫環境

  • 主機:localhost:3306
  • 帳號:root / 密碼:9999
  • 資料庫:ok
  • 資料表:abc(欄位:id, name)

共用連線與查詢程式碼

<?php
$dbh = @mysql_connect("localhost:3306", "root", "9999");
if (!$dbh) die("連線失敗");
@mysql_select_db("ok", $dbh);
$q = "SELECT * FROM abc";
?>

方法一:mysql_fetch_row() - 數值索引陣列

<?php
$rs = mysql_query($q, $dbh);
if (!$rs) die("查詢失效");
echo "<table><tr><th>ID</th><th>Name</th></tr>";
while ($row = mysql_fetch_row($rs)) {
    echo "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}
echo "</table>";
?>

特點:回傳 [0]=>id, [1]=>name,須記住欄位順序,效能最好,記憶體佔用最低。

方法二:mysql_fetch_object() - 物件導向存取

<?php
$rs = mysql_query($q, $dbh);
while ($row = mysql_fetch_object($rs)) {
    echo "$row->id $row->name <br />";
}
?>

特點:以屬性名存取($row->id),程式碼可讀性高,適合物件導向開發,效能略低於 row。

方法三:mysql_fetch_array() - 雙模式陣列

<?php
$rs = mysql_query($q, $dbh);
while ($row = mysql_fetch_array($rs)) {
    echo "$row[id] $row[name] <br />";
}
?>

特點:同時提供數值與關聯索引($row[0] 同 $row['id']),靈活但記憶體佔用較大。若只需關聯索引,可用 mysql_fetch_assoc()。

效能與選擇建議

函式回傳型別記憶體適用場景
fetch_row數值索引陣列最低大量資料、效能優先、欄位固定
fetch_objectstdClass 物件中等OOP 專案、程式碼可讀性優先
fetch_array雙索引陣列最高需同時以數值/關聯存取、快速原型
fetch_assoc關聯索引陣列中等僅需欄位名存取、現代專案推薦

現代化遷移提醒

請勿在新專案使用 mysql_* 函式。請改用:

  • mysqli:$mysqli->query() 搭配 fetch_assoc()/fetch_object()
  • PDO:$pdo->query() 搭配 fetch(PDO::FETCH_ASSOC)/FETCH_OBJ

兩者皆支援預處理語句,有效防範 SQL 注入。

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