是否有一种方法可以在MySQL中使用PHP获取表的列名?


当前回答

$col = $db->query("SHOW COLUMNS FROM category");

while ($fildss = $col->fetch_array())
{             
    $filds[] = '"{'.$fildss['Field'].'}"';
    $values[] = '$rows->'.$fildss['Field'].'';
}

if($type == 'value')
{
    return $values = implode(',', $values);
}
else {
     return $filds = implode(',', $filds);
}

其他回答

如果你喜欢的话,还有这个:

mysql_query('SHOW COLUMNS FROM tableName'); 

你可以使用DESCRIBE:

DESCRIBE my_table;

或者在更新的版本中,你可以使用INFORMATION_SCHEMA:

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

或者你可以使用SHOW COLUMNS:

SHOW COLUMNS FROM my_table;

或者在一行中获取带逗号的列名:

SELECT group_concat(COLUMN_NAME)
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

这对我很有效。

$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
    echo $row[0]."<br>";
}

下面的SQL语句几乎是等价的:

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
  [AND column_name LIKE 'wild']

SHOW COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']

参考:INFORMATION_SCHEMA列

mysql_list_fields函数可能会引起您的兴趣;但是,正如手册所述:

该函数不建议使用。它是 最好使用mysql_query()来 而不是使用SQL SHOW COLUMNS FROM table [LIKE 'name']语句。