首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 數據庫函數詳解 (四):結果集行數據獲取與字段信息函數

     編輯:MySQL 資料庫相關知識

MySQL 結果集行數據獲取與字段信息函數詳解

本文繼續介紹 MySQL 擴展中用於處理查詢結果集的核心函數,涵蓋面向對象獲取行、數組獲取行、字段名稱獲取、字段指針定位以及字段詳細元數據獲取等功能。

1. mysql_fetch_object() - 以對象形式獲取行

語法: 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);
?>

2. mysql_fetch_row() - 以索引數組形式獲取行

語法: 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);
?>

3. mysql_field_name() - 獲取指定列名稱

語法: 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>";
    }
}
?>

4. mysql_field_seek() - 設置字段指針位置

語法: 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教程網 | 原文鏈接

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