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

MySQL 數據庫函數詳解 (三):錯誤處理與結果集數據獲取進階

     編輯:MySQL 資料庫相關知識

MySQL 錯誤處理與高級結果集獲取函數

本文介紹 MySQL 錯誤獲取函數、關聯數組獲取行、字段元數據對象獲取、以及行長度數組獲取等進階功能,幫助開發者構建更健壯的數據庫應用。

1. mysql_error() - 獲取最近錯誤信息

語法: string mysql_error([int link_id])

返回給定連接最近一次 MySQL 操作的錯誤信息字符串。若無錯誤返回空字符串。參數 link_id 可省略,默認使用最近打開的連接。

<?php
$link = mysql_pconnect("localhost", "sunsoft", "suixiang") or die("Could not connect");
echo "Connected successfully";
$query = "SELECT * FROM president";
$result = mysql_query($query) or die("Query failed, error: " . mysql_error());
?>

2. mysql_fetch_array() - 獲取關聯/數值混合數組

語法: array mysql_fetch_array(int result_id [, int result_type])

將結果行同時以數值索引和關聯鍵名(列名)返回。result_type 可為:

  • MYSQL_ASSOC - 僅關聯索引
  • MYSQL_NUM - 僅數值索引
  • MYSQL_BOTH - 兩者皆有(默認)

注意:若多列同名,後列會覆蓋前列,解決辦法是使用列別名或數值索引。性能與 mysql_fetch_row() 相近。

<?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_array($result)) {
    printf("%s %s<br><br>", $row[0], $row[1]);
    printf("%s %s<br><br>", $row["last_name"], $row["first_name"]);
}
mysql_free_result($result);
?>

3. mysql_fetch_field() - 獲取字段元數據對象

語法: object mysql_fetch_field(int result_id [, int field_offset])

返回包含字段詳細元數據的對象,屬性包括:name、table、max_length、not_null、primary_key、unique_key、multiple_key、numeric、blob、type、unsigned、zerofill 等。省略 field_offset 時按順序獲取下一字段。

<?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);
    $meta = mysql_fetch_field($result);
    if (!$meta) {
        echo "No information available<br><br>";
        continue;
    }
    echo "<pre>";
    printf("name: %s
", $meta->name); printf("table: %s
", $meta->table); printf("max_length: %s
", $meta->max_length); printf("not_null: %s
", $meta->not_null); printf("primary_key: %s
", $meta->primary_key); printf("type: %s
", $meta->type); // ... 其他屬性 echo "</pre>"; } ?>

4. mysql_fetch_lengths() - 獲取當前行各列長度

語法: array mysql_fetch_lengths(int result_id)

返回上一次 mysql_fetch_row() 獲取的行中,各列數據的實際長度(字節數)。索引從 0 開始。失敗返回 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 * FROM president";
$result = mysql_query($query) or die("Query failed");

$row_num = 0;
while (mysql_fetch_row($result)) {
    ++$row_num;
    printf("Row %d column lengths:<br><br>", $row_num);
    $len = mysql_fetch_lengths($result);
    if (!$len) {
        echo "No information available<br><br>";
        break;
    }
    echo "<pre>";
    for ($i = 0; $i < mysql_num_fields($result); $i++) {
        printf("Column %d: %s
", $i, $len[$i]); } echo "</pre>"; } ?>

總結

錯誤處理是構建健壯應用的基礎,mysql_error() 和 mysql_errno() 應在每次查詢後檢查。mysql_fetch_array() 是最常用的行獲取方式,靈活性最強。mysql_fetch_field() 提供了豐富的元數據,適合構建動態表單、數據字典等工具。mysql_fetch_lengths() 則是處理二進制/長文本數據的輔助工具。

本文來源:52教程網 | 原文鏈接

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