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


当前回答

你可以使用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';

其他回答

调查:

mysql_query('DESCRIBE '.$table);

MySQL函数 描述表 应该把你带到你想去的地方(把你的表名输入“table”)。您必须对输出进行一些解析,但这非常简单。我记得,如果执行该查询,PHP查询结果访问函数将以列名作为键,该函数通常会提供一个键-值对。但我已经有一段时间没有使用PHP了,所以不要强迫我这么做。:)

如果使用assoc加载结果,简单的方法是这样做:

$sql = "SELECT p.* FROM (SELECT 1) as dummy LEFT JOIN `product_table` p on null";
$q = $this->db->query($sql);
$column_names = array_keys($q->row);

这个你用这个查询加载一个结果,你得到一个数组,表的列名为键,值为空。 如。

Array(
'product_id' => null,
'sku' => null,
'price' => null,
...
)

之后,您可以使用PHP函数array_keys($result)轻松获取表的列名。

这对我很有效。

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

你可能还想检查mysql_fetch_array(),如下所示:

$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}