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

MySQL PHP 擴展核心函數詳解(四):欄位元數據深度解析

     編輯:MySQL 綜合教學

PHP mysql 擴展:欄位元數據函數族完整指南(mysql_field_seek 至 mysql_field_len)

本文專注於結果集欄位級元數據操作:指針定位、表名、類型、標誌、長度獲取,附完整遍歷代碼與輸出結構說明,為 ORM 構建與結構同步工具提供底層支撐。

函數族完整列表

函數功能返回值說明
mysql_field_seek設定欄位指針位置成功 TRUE,失敗 FALSE;後續 fetch_field 讀取該位置
mysql_fetch_field獲取欄位元數據物件含 name/table/max_length/type/flags/primary_key 等屬性
mysql_field_table欄位所屬表名計算欄位返回空串
mysql_field_type欄位類型字串如 int, varchar, datetime, blob 等
mysql_field_flags欄位標誌集合空格分隔:not_null primary_key unique_key auto_increment 等
mysql_field_len欄位最大長度數字,單位字節

完整遍歷代碼範例

<?php
$link = mysql_pconnect('localhost', 'user', 'pass');
mysql_select_db('db_name');
$result = mysql_query('SELECT * FROM president');

$cols = mysql_num_fields($result);
for ($i = 0; $i < $cols; $i++) {
    // 定位指針(可選,fetch_field 內部會推進)
    if (!mysql_field_seek($result, $i)) {
        echo "Cannot seek to column $i
"; continue; } $meta = mysql_fetch_field($result, $i); if (!$meta) { echo "No metadata for column $i
"; continue; } echo "<pre>Column $i Metadata:\n"; printf(" name: %s\n", $meta->name); printf(" table: %s\n", $meta->table); printf(" type: %s\n", $meta->type); printf(" max_length: %d\n", $meta->max_length); printf(" not_null: %s\n", $meta->not_null ? 'YES' : 'NO'); printf(" primary_key: %s\n", $meta->primary_key ? 'YES' : 'NO'); printf(" unique_key: %s\n", $meta->unique_key ? 'YES' : 'NO'); printf(" multiple_key: %s\n", $meta->multiple_key ? 'YES' : 'NO'); printf(" numeric: %s\n", $meta->numeric ? 'YES' : 'NO'); printf(" blob: %s\n", $meta->blob ? 'YES' : 'NO'); printf(" unsigned: %s\n", $meta->unsigned ? 'YES' : 'NO'); printf(" zerofill: %s\n", $meta->zerofill ? 'YES' : 'NO'); echo "</pre>"; } ?>

mysql_field_flags 返回值解析

返回空格分隔的標誌字串,常見值:

  • not_null:NOT NULL 約束
  • primary_key:主鍵
  • unique_key:唯一索引
  • multiple_key:非唯一索引
  • auto_increment:自增
  • blob:BLOB/TEXT 類型
  • unsigned:無符號數值
  • zerofill:ZEROFILL 屬性
  • binary:BINARY 排序

mysqli 對應方法

$result = $mysqli->query('SELECT * FROM table');
$finfo = $result->fetch_fields();  // 返回所有欄位元數據陣列
foreach ($finfo as $field) {
    echo "Name: $field->name\n";
    echo "Type: $field->type\n";        // 數字常數,對應 MYSQLI_TYPE_*
    echo "Length: $field->length\n";    // 定義長度
    echo "MaxLen: $field->max_length\n"; // 實際最大長度
    echo "Flags: $field->flags\n";      // 位掩碼,需用常數判斷
    echo "Table: $field->table\n";
}

實戰應用場景

  1. 自動建表同步工具:讀取源表元數據,生成目標庫 CREATE TABLE SQL
  2. ORM 框架模型映射:根據欄位類型/標誌自動映射實體屬性
  3. 動態表單生成:根據 NOT NULL、類型、長度生成驗證規則
  4. 結構差異比對:跨環境比對欄位定義是否一致
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved