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

MySQL PHP 擴展函數詳解(四):結果集擷取與欄位資訊函數

     編輯:MySQL 資料庫相關知識

前言

本文續接函數系列,重點介紹四種不同方式擷取查詢結果列(mysql_fetch_object、mysql_fetch_row),以及欄位名稱查詢與欄位指標控制函數。

一、mysql_fetch_object():以物件方式擷取列

object mysql_fetch_object(int result [, int result_type])
  • 回傳屬性名對應欄位名的物件,只能用字串索引(屬性名),不能用數字索引。
  • result_type 可為 MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH(預設)。
  • 效能與 mysql_fetch_array 相近。

範例

<?php
$link = mysql_pconnect("localhost", "user", "pass") or die("連線失敗");
mysql_select_db("stamp_db") or die("選擇資料庫失敗");
$result = mysql_query("SELECT last_name, first_name FROM president") or die("查詢失敗");
while ($row = mysql_fetch_object($result)) {
    printf("%s %s<br>", $row->last_name, $row->first_name);
}
mysql_free_result($result);
?>

二、mysql_fetch_row():以索引陣列方式擷取列

array mysql_fetch_row(int result)
  • 回傳數字索引陣列(0 起算),對應欄位順序。
  • 無更多列時回傳 false。

範例

while ($row = mysql_fetch_row($result)) {
    printf("%s %s<br>", $row[0], $row[1]);
}

三、mysql_field_name():取得指定欄位名稱

string mysql_field_name(int result, int field_index)
  • field_index 範圍:0 到 mysql_num_fields()-1

範例

for ($i = 0; $i < mysql_num_fields($result); $i++) {
    $name = mysql_field_name($result, $i);
    echo $name ? "$name<br>" : "無名稱<br>";
}

四、mysql_field_seek():設定欄位指標位置

bool mysql_field_seek(int result, int field_offset)
  • 將內部指標移至指定欄位,下一次 mysql_fetch_field() 將回傳該欄位資訊。
  • 成功回傳 true,失敗回傳 false。

範例:搭配 mysql_fetch_field() 取得完整欄位中繼資料

<?php
for ($i = 0; $i < mysql_num_fields($result); $i++) {
    if (!mysql_field_seek($result, $i)) { echo "指標移動失敗<br>"; continue; }
    $meta = mysql_fetch_field($result);
    if (!$meta) { echo "無中繼資料<br>"; continue; }
    echo "<pre>";
    printf("name: %s<br>", $meta->name);
    printf("type: %s<br>", $meta->type);
    printf("max_length: %s<br>", $meta->max_length);
    printf("not_null: %s<br>", $meta->not_null);
    printf("primary_key: %s<br>", $meta->primary_key);
    printf("unique_key: %s<br>", $meta->unique_key);
    printf("blob: %s<br>", $meta->blob);
    printf("unsigned: %s<br>", $meta->unsigned);
    printf("zerofill: %s<br>", $meta->zerofill);
    echo "</pre>";
}
?>

五、函數選擇建議

函數回傳型態索引方式適用場景
mysql_fetch_object物件字串屬性名物件導向開發、程式碼可讀性優先
mysql_fetch_assoc關聯陣列字串鍵值最常用,語意清晰
mysql_fetch_row索引陣列數字索引高效能、不需欄位名稱
mysql_fetch_array混合陣列數字+字串需同時支援兩種索引

重要提醒

同前文,mysql_* 函數已移除,新專案請使用 mysqli_fetch_object()、mysqli_fetch_assoc() 等對應函數。

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