| 函數 | 返回結構 | 適用場景 |
| mysql_fetch_row | 數字索引陣列 [0]→欄1 | 高性能、不需欄位名 |
| mysql_fetch_assoc | 關聯陣列 ['col']→值 | 可讀性佳、欄位名訪問 |
| mysql_fetch_array | 雙模式(NUM/ASSOC/BOTH) | 靈活切換、預設 BOTH |
| mysql_fetch_object | 物件 $row->col | 物件導向風格 |
核心代碼範例
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_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)) { ... }
- 上一篇文章: MySQL PHP 擴展核心函數詳解(一):連接、查詢、結果集處理
- 下一篇文章: MySQL PHP 擴展核心函數詳解(四):欄位元數據深度解析
Copyright ©
程式碼之家 All Rights Reserved