本文介紹 MySQL 錯誤獲取函數、關聯數組獲取行、字段元數據對象獲取、以及行長度數組獲取等進階功能,幫助開發者構建更健壯的數據庫應用。
語法: 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());
?>
語法: 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);
?>
語法: 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>";
}
?>
語法: 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教程網 | 原文鏈接