是否有一种方法可以在MySQL中使用PHP获取表的列名?
当前回答
这个怎么样:
SELECT @cCommand := GROUP_CONCAT( COLUMN_NAME ORDER BY column_name SEPARATOR ',\n')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
SET @cCommand = CONCAT( 'SELECT ', @cCommand, ' from my_database.my_table;');
PREPARE xCommand from @cCommand;
EXECUTE xCommand;
其他回答
调查:
mysql_query('DESCRIBE '.$table);
如果你喜欢的话,还有这个:
mysql_query('SHOW COLUMNS FROM 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)轻松获取表的列名。
mysql_list_fields函数可能会引起您的兴趣;但是,正如手册所述:
该函数不建议使用。它是 最好使用mysql_query()来 而不是使用SQL SHOW COLUMNS FROM table [LIKE 'name']语句。
这个怎么样:
SELECT @cCommand := GROUP_CONCAT( COLUMN_NAME ORDER BY column_name SEPARATOR ',\n')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
SET @cCommand = CONCAT( 'SELECT ', @cCommand, ' from my_database.my_table;');
PREPARE xCommand from @cCommand;
EXECUTE xCommand;