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(string $database_name, string $table_name, resource $link_identifier = NULL): resource

检索有关给定表名称的信息。

此函数已弃用。建议使用 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
'Could not run query: ' . 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()

参见

添加备注

用户贡献的备注 7 个备注

7
mbevan at marginsoftware dot com
20 年前
如果您愿意使用很多函数来获取有关表中字段的少量信息,那么此函数适合您。如果您只想获取所有可找到的信息,可以使用以下内容

<?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;
}

?>
2
rhyous at yahoo dot com
19 年前
要创建一个包含表中列名称的数组,可以使用以下简单脚本:(注意:使用包含三个列的 table1)

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

print_r($col);

/* it will have the following output
Array (
[firstcolumn] => firstcolumn
[secondcolumn] => secondcolumn
[thirdcolumn] => thirdcolumn
)
*/
?>

或者,您可以从零开始对列进行编号。 这在与 `mysql_fetch_row` 结合使用时很有帮助,因为它可以获取数组。 您无需记住某个列的数组中的编号。

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

print_r($col);

/* it will have the following output
Array (
[firstcolumn] => 0
[secondcolumn] => 1
[thirdcolumn] => 2
)
*/
?>

要将它与 `mysql_fetch_row` 结合使用

<?php
$row
= mysql_fetch_row("SELECT * from table1",$db) or die("mysql error");
?>

您现在可以调用 `$row[col[firstcolumn]]`。 当您有很多列时,这非常有用。
-3
phpflow at gmail dot com
12 年前
以下脚本用于获取表的全部列信息。 当我们使用自定义 ORM 时,我们需要将列名称与数组键匹配。

<?php
function getColoumn($table) {
$result = mysql_query("SHOW COLUMNS FROM ". $table);
if (!
$result) {
echo
'Could not run query: ' . mysql_error();
}
$fieldnames=array();
if (
mysql_num_rows($result) > 0) {
while (
$row = mysql_fetch_assoc($result)) {
$fieldnames[] = $row['Field'];
}
}

return
$fieldnames;
}
?>
-6
dom at brainwaveuk dot com
22 年前
`mysql_list_fields()` 用于检索给定表名的信息,但您可以使用类似 `mysql_fetch_field` 的方法从结果源中检索字段名。
-9
perwool at seznam dot cz
16 年前
我的每个 HTML 表输出都以包含字段名的标题行开头。 为此,我采用了 MySQL 函数的简短组合,它为我提供了类似于 `mysql_fetch_array()` 的结果,用于获取值行。 以下示例显示了基本思想。 应该根据具体情况进行调整

<?php
//...
$field_names = array_keys( mysql_fetch_array( mysql_query( $query, $link), MYSQL_ASSOC));
//...
?>

这样做的优点是,它提供了结果的名称,而不是整个表的字段名。
请仔细阅读有关 SQL 结果中重复字段名的讨论。 上面的示例中,指针被递增,因此一些没有递增指针的普通函数可能更有用 :-)

Jan
-13
steve at tequilasolutions dot com
17 年前
注意,使用 `mysql_list_fields` 将更改当前选定的数据库,因此后续的 `mysql_query` 操作将作用于参数 1 中的数据库,而不是使用 `mysql_select_db` 选择的数据库。
-30
user1337 at 1337example dot com
6 年前
asgasgashashashasashsah
dshds
hd
s
sd
j
sj
df
j
fg
j
dfhfj
gf
jr
h
yure

gfj
3w
yfg
jr
ej
dtey

y
j
uresy
hf
y
re
256
4

rhy
udf
j
d

HUI
To Top