是否有一种方法可以在MySQL中使用PHP获取表的列名?
当前回答
mysql_list_fields函数可能会引起您的兴趣;但是,正如手册所述:
该函数不建议使用。它是 最好使用mysql_query()来 而不是使用SQL SHOW COLUMNS FROM table [LIKE 'name']语句。
其他回答
我需要列名作为平面数组,而其他答案返回关联数组,所以我使用:
$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
)
这个解决方案来自命令行mysql
mysql>USE information_schema;
在下面的查询中,只需将<——DATABASE_NAME——>更改为您的数据库,<——TABLENAME——>更改为您的表名,其中您只需要description语句的字段值
mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND TABLE_NAME='<--TABLENAME-->';
下面的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
... )
对不起死灵,但我喜欢我的功能;)
附注:我没有包括类核心,但你可以使用自己的类。科学博士
你可能还想检查mysql_fetch_array(),如下所示:
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}
推荐文章
- 如何使用MySQL DECIMAL?
- 修改表:如何将“允许空”属性从不空改为允许空
- 使用PHP加密和解密密码的最佳方法是什么?
- 比较两个SQL Server数据库(模式和数据)的最佳工具是什么?
- 如何实现一个好的脏话过滤器?
- 在SQL中,如何在范围中“分组”?
- PHP中的三个点(…)是什么意思?
- Guzzlehttp -如何从guzzle6得到响应的正文?
- 选项(RECOMPILE)总是更快;为什么?
- 移动一个文件到服务器上的另一个文件夹
- 设置数据库从单用户模式到多用户
- Laravel中使用雄辩的ORM进行批量插入
- oracle中的RANK()和DENSE_RANK()函数有什么区别?
- PHP 5.4调用时引用传递-容易修复可用吗?
- 警告用户/local/mysql/data目录不属于mysql用户