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

MySQL PHP 擴展函數詳解(三):錯誤處理、陣列擷取、欄位中繼與長度資訊

     編輯:MySQL 資料庫相關知識

前言

本文涵蓋錯誤訊息取得、增強版陣列擷取、欄位中繼資料物件、以及單列各欄位長度資訊四大實用函數群。

一、mysql_error():取得最近一次錯誤訊息

string mysql_error([resource link_identifier])
  • 回傳最近 MySQL 操作的錯誤字串;無錯誤回傳空字串。
  • 建議每次查詢後檢查,避免靜默失敗。

範例

<?php
$link = mysql_pconnect("localhost", "user", "pass") or die("連線失敗");
$query = "SELECT * FROM president";
$result = mysql_query($query) or die("查詢失敗:" . mysql_error());
?>

二、mysql_fetch_array():雙重索引陣列擷取(最常用)

array mysql_fetch_array(int result [, int result_type])
  • 同時包含 數字索引 與 關聯索引(欄位名)。
  • result_type 選項:
    • MYSQL_ASSOC:僅關聯索引(同 mysql_fetch_assoc)
    • MYSQL_NUM:僅數字索引(同 mysql_fetch_row)
    • MYSQL_BOTH:預設,兩者皆有
  • 同名欄位會互相覆蓋(後者勝出),解決方式:使用數字索引或 SQL 別名 AS。
  • 效能與 mysql_fetch_row 相近。

範例

<?php
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    // 數字索引
    printf("%s %s<br>", $row[0], $row[1]);
    // 關聯索引
    printf("%s %s<br>", $row["last_name"], $row["first_name"]);
}
mysql_free_result($result);
?>

三、mysql_fetch_field():取得欄位中繼資料物件

object mysql_fetch_field(int result [, int col_num])
  • 回傳包含欄位詳細屬性的物件(name、type、max_length、primary_key、not_null 等)。
  • 省略 col_num 時依序推進;指定時可隨機存取。

物件屬性完整列表

屬性說明
name欄位名稱
table所屬資料表
type資料類型
max_length最大長度
not_null是否 NOT NULL
primary_key是否主鍵
unique_key是否唯一鍵
multiple_key是否非唯一索引
numeric是否數值型
blob是否 BLOB/TEXT
unsigned是否無號數
zerofill是否 ZEROFILL

範例:完整列出所有欄位中繼資料

<?php
for ($i = 0; $i < mysql_num_fields($result); $i++) {
    $meta = mysql_fetch_field($result, $i);
    if (!$meta) continue;
    echo "<pre>";
    foreach ($meta as $key => $val) {
        printf("%s: %s<br>", $key, $val);
    }
    echo "</pre>";
}
?>

四、mysql_fetch_lengths():取得單列各欄位實際長度

array mysql_fetch_lengths(int result)
  • 回傳上一次 mysql_fetch_row() 擷取的那一列,各欄位值的實際字串長度(位元組數)。
  • 索引從 0 開始,失敗回傳 false。

範例

<?php
while ($row = mysql_fetch_row($result)) {
    $lengths = mysql_fetch_lengths($result);
    for ($i = 0; $i < count($row); $i++) {
        printf("Column %d: 值='%s' 長度=%d<br>", $i, $row[$i], $lengths[$i]);
    }
}
?>

小結

mysql_fetch_array(MYSQL_BOTH) 是最通用的擷取方式;mysql_error() 是除錯生命線;mysql_fetch_field() 提供完整結構描述,適合建立動態表單或匯出工具。再次提醒:新專案請改用 mysqli/PDO。

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