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

PHP mysql_fetch_row() 函數詳解:數組模式獲取查詢結果、自動指針遞增與實戰代碼模板

     編輯:PHP 綜合知識

函數定義與核心特性

array|false mysql_fetch_row(resource $result)
  • 返回索引數組(0,1,2...對應字段順序)
  • 每次調用自動將結果集指針移至下一行
  • 無數據時返回 false
  • 不支持關聯鍵訪問,僅能用 $row[0]、$row[1]

完整實戰代碼模板

<?php
// 1. 連接數據庫(推薦 mysqli/PDO,此處為演示 mysql_* 兼容寫法)
$conn = mysqli_connect('localhost', 'root', 'password', 'Books');
if (!$conn) die('Connection failed: ' . mysqli_connect_error());

// 2. 執行查詢
$query = "SELECT * FROM Computers WHERE price >= 20";
$result = mysqli_query($conn, $query);
if (!$result) die('Query failed: ' . mysqli_error($conn));

// 3. 循環獲取行數據
while ($row = mysqli_fetch_row($result)) {
    // $row 為索引數組:[0=>id, 1=>name, 2=>price, 3=>publish_date...]
    echo "書名:{$row[1]}
"; echo "價格:{$row[2]}
"; echo "出版日期:{$row[3]}

"; } // 4. 釋放結果集 mysqli_free_result($result); // 5. 關閉連接 mysqli_close($conn); ?>

輸出結果示例

書名:數據結構
價格:20
出版日期:2001-01-01

書名:C語言
價格:23
出版日期:1998-04-04

書名:PHP入門技術
價格:22
出版日期:2005-05-01

關鍵注意事項

  1. 索引對應字段順序:SELECT * 依賴表結構順序,生產環境禁用 SELECT *,顯式列出字段
  2. 越界訪問風險:$row[99] 不報錯返回 NULL,難以排查
  3. 字段重名覆蓋:JOIN 產生同名字段時,後者覆蓋前者,索引數組無法區分
  4. 類型轉換:所有值均為字符串,數值需 intval()/floatval() 轉換

三大獲取函數對比

函數返回結構訪問方式適用場景
mysql_fetch_row索引數組 [0,1,2...]$row[0]高性能、固定結構、無需字段名
mysql_fetch_assoc關聯數組 ['field'=>val]$row['name']語義清晰、字段名可讀、推薦日常使用
mysql_fetch_array雙模式(索引+關聯)$row[0] / $row['name']兼容舊代碼、內存佔用雙倍
mysql_fetch_object對象 stdClass$row->name面向對象風格、屬性訪問

現代 mysqli/PDO 等效寫法

mysqli (面向過程)

while ($row = mysqli_fetch_row($result)) { ... }
// 或
while ($row = $result->fetch_row()) { ... }

PDO

$stmt = $pdo->query($query);
while ($row = $stmt->fetch(PDO::FETCH_NUM)) { ... }  // 索引數組
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ... } // 關聯數組
while ($row = $stmt->fetch(PDO::FETCH_BOTH)) { ... }  // 雙模式
while ($row = $stmt->fetch(PDO::FETCH_OBJ)) { ... }   // 對象

性能提示

  • FETCH_NUM (fetch_row) 最快,內存佔用最小
  • 大結果集建議 MYSQLI_USE_RESULT / PDO 游標模式流式讀取
  • 釋放結果集 free_result() 及時釋放內存
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved