我想在php中将mysql表的所有列名都放到一个数组中?对此有疑问吗?
ecr0jaav16#
所有答案中最简单的解决方案:
DESC `table name`
或
DESCRIBE `table name`
SHOW COLUMNS FROM `table name`
wooyq4lh17#
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();
ibps3vxo18#
不推荐使用旧的php函数“mysql\u list\u fields()”。因此,现在获取字段名的最佳方法是查询“show columns from table_name[如'name']”。下面是一个小例子:
$fields = array(); $res=mysql_query("SHOW COLUMNS FROM mytable"); while ($x = mysql_fetch_assoc($res)){ $fields[] = $x['Field']; } foreach ($fields as $f) { echo "<br>Field name: ".$f; }
a14dhokn19#
似乎有两种方法:
DESCRIBE `tablename`
SHOW COLUMNS FROM `tablename`
更多关于 DESCRIBE 在这里:http://dev.mysql.com/doc/refman/5.0/en/describe.html
DESCRIBE
pnwntuvh20#
mysql 5.1(不是5.5)中的show columns使用临时磁盘表。http://dev.mysql.com/doc/refman/5.1/en/internal-temporary-tables.htmlhttp://dev.mysql.com/doc/refman/5.1/en/show-columns.html因此,在某些情况下,它可以被认为是缓慢的。至少,它可以提高您创建的\u tmp \u disk \u tables的值。假设每个连接或每个页面请求有一个临时磁盘表。show columns并不是很慢,可能是因为它使用了文件系统缓存。phpmyadmin一直说~0.5ms。与500-1000毫秒的wordpress页面服务相比,这算不了什么。不过,有时候这很重要。有一个磁盘系统的参与,你永远不知道会发生什么,当服务器忙,缓存已满,硬盘驱动器暂停等。正在通过select*from检索列名。。。限制1大约为0.1ms,它还可以使用查询缓存。下面是我的优化代码,用于从表中获取列名,如果可能的话,不使用show columns:
function db_columns_ar($table) { //returns Array('col1name'=>'col1name','col2name'=>'col2name',...) if(!$table) return Array(); if(!is_string($table)) return Array(); global $db_columns_ar_cache; if(!empty($db_columns_ar_cache[$table])) return $db_columns_ar_cache[$table]; //IMPORTANT show columns creates a temp disk table $cols=Array(); $row=db_row_ar($q1="SELECT * FROM `$table` LIMIT 1"); if($row) { foreach($row as $name=>$val) $cols[$name]=$name; } else { $coldata=db_rows($q2="SHOW COLUMNS FROM `$table`"); if($coldata) foreach($coldata as $row) $cols[$row->Field]=$row->Field; } $db_columns_ar_cache[$table]=$cols; //debugexit($q1,$q2,$row,$coldata,$cols); return $cols; }
笔记:只要表的第一行不包含兆字节范围的数据,它就可以正常工作。函数名db\u rows和db\u row\u ar应替换为特定的数据库设置。
7kqas0il21#
我以前也这样做过。
SELECT column_name FROM information_schema.columns WHERE table_name='insert table name here';
21条答案
按热度按时间ecr0jaav16#
所有答案中最简单的解决方案:
或
或
wooyq4lh17#
ibps3vxo18#
不推荐使用旧的php函数“mysql\u list\u fields()”。因此,现在获取字段名的最佳方法是查询“show columns from table_name[如'name']”。下面是一个小例子:
a14dhokn19#
似乎有两种方法:
或
更多关于
DESCRIBE
在这里:http://dev.mysql.com/doc/refman/5.0/en/describe.htmlpnwntuvh20#
mysql 5.1(不是5.5)中的show columns使用临时磁盘表。
http://dev.mysql.com/doc/refman/5.1/en/internal-temporary-tables.html
http://dev.mysql.com/doc/refman/5.1/en/show-columns.html
因此,在某些情况下,它可以被认为是缓慢的。至少,它可以提高您创建的\u tmp \u disk \u tables的值。假设每个连接或每个页面请求有一个临时磁盘表。
show columns并不是很慢,可能是因为它使用了文件系统缓存。phpmyadmin一直说~0.5ms。与500-1000毫秒的wordpress页面服务相比,这算不了什么。不过,有时候这很重要。有一个磁盘系统的参与,你永远不知道会发生什么,当服务器忙,缓存已满,硬盘驱动器暂停等。
正在通过select*from检索列名。。。限制1大约为0.1ms,它还可以使用查询缓存。
下面是我的优化代码,用于从表中获取列名,如果可能的话,不使用show columns:
笔记:
只要表的第一行不包含兆字节范围的数据,它就可以正常工作。
函数名db\u rows和db\u row\u ar应替换为特定的数据库设置。
7kqas0il21#
我以前也这样做过。