我想让所有的mysql表的col名称在php数组?
对此有疑问吗?
我想让所有的mysql表的col名称在php数组?
对此有疑问吗?
当前回答
不确定这是否是你想要的,但这对我来说很管用:
$query = query("DESC YourTable");
$col_names = array_column($query, 'Field');
这将返回表或数组中的列名/变量名作为字符串的简单数组,这是我动态构建MySQL查询所需要的。令我沮丧的是,我根本不知道如何在PHP中很好地索引数组,所以我不确定如何处理来自DESC或SHOW的结果。希望我的回答对像我这样的初学者有帮助!
print_r($col_names);
其他回答
此查询获取数据库中所有列的列表,而无需指定表名。它返回一个只包含列名的列表:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'db_name'
但是,当我在phpmyadmin中运行这个查询时,它显示了一系列错误。尽管如此,它还是奏效了。所以要谨慎使用。
似乎有两种方法:
DESCRIBE `tablename`
or
SHOW COLUMNS FROM `tablename`
更多描述请点击:http://dev.mysql.com/doc/refman/5.0/en/describe.html
调用DESCRIBE可以很好地获取表的所有列,但如果需要对其进行筛选,则需要使用SHOW columns FROM。
PHP函数获取表的所有信息的例子:
// get table columns (or return false if table not found)
function get_table_columns($db, $table) {
global $pdo;
if($cols = $pdo->query("DESCRIBE `$db`.`$table`")) {
if($cols = $cols->fetchAll(PDO::FETCH_ASSOC)) {
return $cols;
}
}
return false;
}
在我的例子中,我必须找到一个表的主键。所以,我用了:
SHOW COLUMNS FROM `table` WHERE `Key`='PRI';
下面是我的PHP函数:
// get table Primary Key
function get_table_pk($db, $table) {
global $pdo;
$q = "SHOW COLUMNS FROM `$db`.`$table` WHERE `Key` = 'PRI'";
if($cols = $pdo->query($q)) {
if($cols = $cols->fetchAll(PDO::FETCH_ASSOC)) {
return $cols[0];
}
}
return false;
}
如果您使用php,请使用这个要点。
它可以获得选择字段的完整信息而没有结果,以及所有自定义字段,如:
SELECT a.name aname, b.name bname, b.*
FROM table1 a LEFT JOIN table2 b
ON a.id = b.pid;
如果上面SQL没有返回数据,还会得到字段名aname, bname, b的其他字段名
只有两行:
$query_info = mysqli_query($link, $data_source);
$fetch_fields_result = $query_info->fetch_fields();
编辑:今天我学到了更好的方法。请看ircmaxell的回答。
解析SHOW COLUMNS FROM表的输出;
更多信息请点击:http://dev.mysql.com/doc/refman/5.0/en/show-columns.html