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

MySQL PHP 擴展核心函數詳解(二):結果集遍歷、元數據、錯誤處理

     編輯:MySQL 綜合教學

PHP mysql 擴展進階函數:mysql_fetch_array 至 mysql_field_flags

接續上文,本文詳細講解結果集多種遍歷方式(關聯/數字/物件)、欄位元數據獲取(名稱/類型/長度/標誌/所屬表)、錯誤代碼與信息獲取,附實戰代碼範例。

結果集遍歷函數對比

核心代碼範例

mysql_fetch_array 多模式演示

$result = mysql_query("SELECT last_name, first_name FROM president");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    echo "數字索引: $row[0] $row[1]
"; echo "關聯索引: $row[last_name] $row[first_name]
"; } // 同名欄位:後者覆蓋前者,建議用別名 SELECT col AS alias

mysql_fetch_object 物件風格

$result = mysql_query("SELECT * FROM president");
while ($obj = mysql_fetch_object($result)) {
    printf("%s %s
", $obj->last_name, $obj->first_name); }

mysql_db_query 指定數據庫查詢

$link = mysql_pconnect('localhost', 'user', 'pass');
$result = mysql_db_query('samp_db', 'SELECT * FROM president', $link);

欄位元數據函數族

函數返回結構適用場景
mysql_fetch_row數字索引陣列 [0]→欄1高性能、不需欄位名
mysql_fetch_assoc關聯陣列 ['col']→值可讀性佳、欄位名訪問
mysql_fetch_array雙模式(NUM/ASSOC/BOTH)靈活切換、預設 BOTH
mysql_fetch_object物件 $row->col物件導向風格
函數用途參數
mysql_num_fields結果集欄位總數result_id
mysql_field_name欄位名稱result_id, index (0起)
mysql_field_type欄位類型result_id, index
mysql_field_len欄位最大長度result_id, index
mysql_field_flags欄位標誌集合result_id, index
mysql_field_table欄位所屬表名result_id, index
mysql_field_seek移動欄位指針result_id, index

遍歷所有欄位元數據

$result = mysql_query("SELECT * FROM president");
$cols = mysql_num_fields($result);
for ($i = 0; $i < $cols; $i++) {
    $meta = mysql_fetch_field($result, $i);
    echo "Column $i:
"; echo " Name: " . $meta->name . "
"; echo " Type: " . $meta->type . "
"; echo " MaxLen: " . $meta->max_length . "
"; echo " Flags: " . $meta->flags . "
"; echo " Table: " . $meta->table . "
"; echo " Primary: " . ($meta->primary_key ? 'YES' : 'NO') . "
"; echo " NotNull: " . ($meta->not_null ? 'YES' : 'NO') . "
"; }

錯誤處理最佳實踐

$link = mysql_pconnect('localhost', 'user', 'pass') or die('連接失敗');
$result = mysql_query($sql, $link) or die(
    '查詢失敗 [Errno: ' . mysql_errno($link) . '] ' . mysql_error($link)
);

遷移對照:mysqli 結果集處理

// mysqli 物件風格
$result = $mysqli->query($sql);
while ($row = $result->fetch_assoc()) { ... }
$result->free();

// PDO
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ... }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved