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


当前回答

有趣的是,您可以使用 EXPLAIN table_name与DESCRIBE table_name和SHOW COLUMNS FROM table_name同义 尽管EXPLAIN更常用来获取关于查询执行计划的信息。

其他回答

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

mysql_query('SHOW COLUMNS FROM tableName'); 

下面的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列

$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

mysql>USE information_schema;

在下面的查询中,只需将<——DATABASE_NAME——>更改为您的数据库,<——TABLENAME——>更改为您的表名,其中您只需要description语句的字段值

mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND   TABLE_NAME='<--TABLENAME-->';

如果使用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)轻松获取表的列名。