本文繼續介紹 MySQL 擴展中用於處理查詢結果集的核心函數,涵蓋面向對象獲取行、數組獲取行、字段名稱獲取、字段指針定位以及字段詳細元數據獲取等功能。
語法: object mysql_fetch_object(int result_id [, int result_type])
將結果集的下一行作為對象返回,屬性名對應列名。若無數據返回 false。參數 result_type 可為 MYSQL_ASSOC、MYSQL_NUM 或 MYSQL_BOTH。注意:對象屬性名不能為數字,故只能用字符串索引訪問。性能與 mysql_fetch_array() 相近。
<?php
$link = mysql_pconnect("localhost", "sunsoft", "suixiang") or die("Could not connect");
mysql_select_db("stamp_db") or die("Could not select database");
$query = "SELECT last_name, first_name FROM president";
$result = mysql_query($query) or die("Query failed");
while ($row = mysql_fetch_object($result)) {
printf("%s %s<br><br>", $row->last_name, $row->first_name);
}
mysql_free_result($result);
?>
語法: array mysql_fetch_row(int result_id)
返回下一行作為數值索引數組(索引 0 到 mysql_num_fields()-1),無數據時返回 false。速度最快,適合不需要列名的場景。
<?php
$link = mysql_pconnect("localhost", "sunsoft", "suixiang") or die("Could not connect");
mysql_select_db("stamp_db") or die("Could not select database");
$query = "SELECT last_name, first_name FROM president";
$result = mysql_query($query) or die("Query failed");
while ($row = mysql_fetch_row($result)) {
printf("%s %s<br><br>", $row[0], $row[1]);
}
mysql_free_result($result);
?>
語法: string mysql_field_name(int result_id, int field_index)
返回結果集指定索引位置的列名。索引範圍 0 到 mysql_num_fields()-1。
<?php
$link = mysql_pconnect("localhost", "sunsoft", "suixiang") or die("Could not connect");
mysql_select_db("stamp_db") or die("Could not select database");
$query = "SELECT * FROM president";
$result = mysql_query($query) or die("Query failed");
for ($i = 0; $i < mysql_num_fields($result); $i++) {
printf("Column %d name: ", $i);
$name = mysql_field_name($result, $i);
if (!$name) {
echo "No name available<br><br>";
} else {
echo "$name<br><br>";
}
}
?>
語法: int mysql_field_seek(int result_id, int field_offset)
為後續 mysql_fetch_field() 調用設置字段偏移量。成功返回 true,失敗返回 false。常用於配合 mysql_fetch_field() 遍歷所有字段元數據。
<?php
$link = mysql_pconnect("localhost", "sunsoft", "suixiang") or die("Could not connect");
mysql_select_db("stamp_db") or die("Could not select database");
$query = "SELECT * FROM president";
$result = mysql_query($query) or die("Query failed");
for ($i = 0; $i < mysql_num_fields($result); $i++) {
printf("Field %d info:<br><br>", $i);
if (!mysql_field_seek($result, $i)) {
echo "Cannot seek to column<br><br>";
continue;
}
$meta = mysql_fetch_field($result);
if (!$meta) {
echo "No information available<br><br>";
continue;
}
echo "<pre>";
printf("blob: %s
", $meta->blob);
printf("max_length: %s
", $meta->max_length);
printf("multiple_key: %s
", $meta->multiple_key);
printf("name: %s
", $meta->name);
printf("not_null: %s
", $meta->not_null);
printf("numeric: %s
", $meta->numeric);
printf("primary_key: %s
", $meta->primary_key);
printf("table: %s
", $meta->table);
printf("type: %s
", $meta->type);
printf("unique_key: %s
", $meta->unique_key);
printf("unsigned: %s
", $meta->unsigned);
printf("zerofill: %s
", $meta->zerofill);
echo "</pre>";
}
?>
這組函數提供了從結果集獲取行數據的多種方式(對象、索引數組),以及獲取字段元數據的完整工具鏈。實際開發中可根據需求選擇:mysql_fetch_assoc()/mysql_fetch_object() 適合業務邏輯,mysql_fetch_row() 適合高性能數據處理,字段元數據函數則用於動態表結構分析。
本文來源:52教程網 | 原文鏈接