我想让所有的mysql表的col名称在php数组?

对此有疑问吗?


当前回答

使用mysql_fetch_field()查看所有列数据。参见手册。

$query = 'select * from myfield';
$result = mysql_query($query);
$i = 0;
while ($i < mysql_num_fields($result))
{
   $fld = mysql_fetch_field($result, $i);
   $myarray[]=$fld->name;
   $i = $i + 1;
}

“警告 这个扩展在PHP 5.5.0已经弃用了,将来也会被移除。”

其他回答

此查询获取数据库中所有列的列表,而无需指定表名。它返回一个只包含列名的列表:

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_schema = 'db_name'

但是,当我在phpmyadmin中运行这个查询时,它显示了一系列错误。尽管如此,它还是奏效了。所以要谨慎使用。

这将生成一个带逗号分隔符的列名字符串:

    SELECT CONCAT('(',GROUP_CONCAT(`COLUMN_NAME`),')') 
    FROM `INFORMATION_SCHEMA`.`COLUMNS` 
    WHERE `TABLE_SCHEMA`='database_name' 
    AND `TABLE_NAME`='table_name';
function get_col_names(){  
    $sql = "SHOW COLUMNS FROM tableName";  
    $result = mysql_query($sql);     
    while($record = mysql_fetch_array($result)){  
     $fields[] = $record['0'];  
    }
    foreach ($fields as $value){  
      echo 'column name is : '.$value.'-';  
}  
 }  

return get_col_names();

我不是专家,但这对我有用。

$sql = "desc MyTable";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
    echo $row[0]."<br>"; // returns the first column of array. in this case Field

      // the below code will return a full array-> Field,Type,Null,Key,Default,Extra    
      // for ($c=0;$c<sizeof($row);$c++){echo @$row[$c]."<br>";}    

}

如果你只需要字段名和类型(可能是为了方便复制粘贴到Excel中):

SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='databasenamegoeshere'
AND DATA_TYPE='decimal' and TABLE_NAME = 'tablenamegoeshere'

删除

DATA_TYPE='decimal'

如果需要所有数据类型