在MySQL中获取表列名称?

有没有办法在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; 

以下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列

我做了一个PDO函数,它返回一个简单数组中的所有列名称。

 public function getColumnNames($table){ $sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table"; try { $core = Core::getInstance(); $stmt = $core->dbh->prepare($sql); $stmt->bindValue(':table', $table, PDO::PARAM_STR); $stmt->execute(); $output = array(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $output[] = $row['COLUMN_NAME']; } return $output; } catch(PDOException $pe) { trigger_error('Could not connect to MySQL database. ' . $pe->getMessage() , E_USER_ERROR); } } 

输出将是一个数组:

 Array ( [0] => id [1] => name [2] => email [3] => shoe_size [4] => likes ... ) 

对不起,但我喜欢我的function;)

PS我没有包括类核心,但你可以使用自己的类.. DS

这个怎么样:

 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; 

这个解决scheme是从命令行mysql

 mysql>USE information_schema; 

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

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

你可能也想看看mysql_fetch_array() ,如下所示:

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

注意可以使用也很有趣
EXPLAIN table_nameDESCRIBLE table_nameSHOW COLUMS FROM table_name同义,尽pipeEXPLAIN更常用于获取有关查询执行计划的信息。

调查:

 mysql_query('DESCRIBE '.$table); 

MySQL函数describe表应该让你到你想去的地方(把你的表名放在“table”中)。 你将不得不parsing一些输出,但这很容易。 我记得,如果你执行这个查询,通常会给你一个键值对的PHP查询结果访问函数将有列名作为键。 但是自从我使用PHP以来已经有一段时间了,所以不要拘泥于此。 🙂

还有,如果你喜欢:

 mysql_query('SHOW COLUMNS FROM tableName'); 

mysql_list_fields函数可能会让你感兴趣; 但是,正如手册所述:

此function已被弃用。 最好使用mysql_query()来发出SQL SHOW COLUMNS FROM table [LIKE 'name']语句。

这对我工作..

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

您可以使用以下简单的命令获取整个表结构。

 DESC TableName 

或者你可以使用下面的查询。

 SHOW COLUMNS FROM TableName 

在MySQL中通过关键字或查询来获取列的详细信息和表结构

1. DESC table_name

2. DESCRIBE table_name

3. SHOW COLUMNS FROM table_name

4. SHOW create table table_name;

5. EXPLAIN table_name

 $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); } 

我需要列名作为平面数组,而其他答案返回关联数组,所以我使用:

 $con = mysqli_connect('localhost',$db_user,$db_pw,$db_name); $table = 'people'; /** * Get the column names for a mysql table **/ function get_column_names($con, $table) { $sql = 'DESCRIBE '.$table; $result = mysqli_query($con, $sql); $rows = array(); while($row = mysqli_fetch_assoc($result)) { $rows[] = $row['Field']; } return $rows; } $col_names = function get_column_names($con, $table); 

$ col_names现在等于:

 ( [0] => name [1] => parent [2] => number [3] => chart_id [4] => type [5] => id )