PHP Conference Japan 2024

mysql_list_fields

(PHP 4, PHP 5)

mysql_list_fields列出 MySQL 資料表欄位

警告

此函式在 PHP 5.4.0 中已被棄用,並且它和整個 原始 MySQL 擴充 已在 PHP 7.0.0 中移除。請改用積極開發的 MySQLiPDO_MySQL 擴充。另請參閱 MySQL:選擇 API 指南。此函式的替代方案包括

  • SQL 查詢: SHOW COLUMNS FROM sometable

說明

mysql_list_fields(字串 $database_name, 字串 $table_name, 資源 $link_identifier = NULL): 資源

擷取有關給定資料表名稱的資訊。

此函數已被棄用。建議改用 mysql_query() 執行 SQL 語句 SHOW COLUMNS FROM table [LIKE 'name']

參數

database_name

要查詢的資料庫名稱。

table_name

要查詢的表格名稱。

link_identifier

MySQL 連線。如果未指定連結識別碼,則會假設使用由 mysql_connect() 開啟的最後一個連結。如果找不到這樣的連結,它會嘗試建立一個連結,如同以無參數呼叫 mysql_connect() 一樣。如果找不到或無法建立連線,則會產生 E_WARNING 等級的錯誤。

返回值

成功時返回結果指標 resource,失敗時返回 false

返回的結果可以與 mysql_field_flags()mysql_field_len()mysql_field_name()mysql_field_type() 一起使用。

範例

範例 #1 已棄用函數 mysql_list_fields() 的替代方案

<?php
$result
= mysql_query("SHOW COLUMNS FROM sometable");
if (!
$result) {
echo
'無法執行查詢:' . mysql_error();
exit;
}
if (
mysql_num_rows($result) > 0) {
while (
$row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>

上述範例將輸出類似以下的內容

Array
(
    [Field] => id
    [Type] => int(7)
    [Null] =>  
    [Key] => PRI
    [Default] =>
    [Extra] => auto_increment
)
Array
(
    [Field] => email
    [Type] => varchar(100)
    [Null] =>
    [Key] =>
    [Default] =>
    [Extra] =>
)

注意事項

注意:

為了向後相容,可以使用以下已棄用的別名:mysql_listfields()

參見

新增註解

使用者貢獻的註解 3 則註解

mbevan at marginsoftware dot com
21 年前
如果您願意使用許多函數來獲取表格中欄位的一些資訊,那麼這個函數適合您。如果您只想取得所有可以找到的資訊,您可以使用這個函數。

<?php

// 參考來源:http://ca.php.net/manual/en/function.mysql-field-flags.php
// 原作者:amir at scrounch dot com
// 傳回表格主鍵欄位的名稱。
// 並保持欄位依照 KEY 的順序。很方便。
function getPrimaryKeyOf($table) {
$keys = Array();

$query = sprintf("SHOW KEYS FROM `%s`", $table);
$result = mysql_query($query) or die(mysql_error());

while (
$row = mysql_fetch_assoc($result)) {
if (
$row['Key_name'] == 'PRIMARY' )
$keys[$row['Seq_in_index'] - 1] = $row['Column_name'];
}

return
$keys;
}

// 傳回關於表格的一堆資訊...
// 自動遞增欄位的名稱(如果有的話)、主鍵中的欄位(使用上述函式)以及所有欄位的所有資訊。
function getTableInformationOf($table) {
$information = array(
"auto" => "",
"primary" => array(),
"fields" => array()
);

$information['primary'] = $this->getPrimaryKeyOf($table);

$result = mysql_query("DESC `$table`");
while (
$field = mysql_fetch_assoc($result) ) {
$information['fields'][] = $field;
if (
$field['Extra'] == "auto_increment" )
$information['auto'] = $field['Field'];
}

return
$information;
}

?>
rhyous at yahoo dot com
19 年前
要建立一個包含表格中欄位名稱的陣列,您可以使用以下簡單的程式碼:(注意:使用具有三個欄位的 table1)

<?php
$qColumnNames
= mysql_query("SHOW COLUMNS FROM table1",$db) or die("MySQL 錯誤");
$numColumns = mysql_num_rows($qColumnNames);
$x = 0;
while (
$x < $numColumns)
{
$colname = mysql_fetch_row($qColumnNames);
$col[$colname[0]] = $colname[0];
$x++;
}

print_r($col);

/* 輸出結果如下:
Array (
[firstcolumn] => firstcolumn
[secondcolumn] => secondcolumn
[thirdcolumn] => thirdcolumn
)
*/
?>

或者您可以將欄位從零開始編號。這在與 mysql_fetch_row 結合使用以獲取陣列時很有幫助。您不必記住特定欄位是陣列中的哪個數字。

<?php
$qColumnNames
= mysql_query("SHOW COLUMNS FROM table1",$db) or die("MySQL 錯誤");
$numColumns = mysql_num_rows($qColumnNames);
$x = 0;
while (
$x < $numColumns)
{
$colname = mysql_fetch_row($qColumnNames);
$col[$colname[0]] = $x;
$x++;
}

print_r($col);

/* 輸出結果如下:
Array (
[firstcolumn] => 0
[secondcolumn] => 1
[thirdcolumn] => 2
)
*/
?>

與 mysql_fetch_row 結合使用:

<?php
$row
= mysql_query("SELECT * from table1",$db) or die("MySQL 錯誤");
$row = mysql_fetch_row($row);
?>

現在您可以呼叫 $row[$col['firstcolumn']]。當您有很多欄位時,這會變得很有用。
phpflow at gmail dot com
12 年前
以下腳本用於獲取表格的所有欄位資訊。當我們使用自定義 ORM 時,需要將欄位名稱與陣列鍵值匹配。

<?php
函式 getColoumn($table) {
$result = mysql_query("SHOW COLUMNS FROM ". $table);
if (!
$result) {
echo
'無法執行查詢:' . mysql_error();
}
$fieldnames=array();
if (
mysql_num_rows($result) > 0) {
while (
$row = mysql_fetch_assoc($result)) {
$fieldnames[] = $row['Field'];
}
}

return
$fieldnames;
}
?>
To Top