是否有一种方法可以在MySQL中使用PHP获取表的列名?
当前回答
您可以使用以下简单的命令获取整个表结构。
DESC TableName
或者您可以使用以下查询。
SHOW COLUMNS FROM TableName
其他回答
如果使用assoc加载结果,简单的方法是这样做:
$sql = "SELECT p.* FROM (SELECT 1) as dummy LEFT JOIN `product_table` p on null";
$q = $this->db->query($sql);
$column_names = array_keys($q->row);
这个你用这个查询加载一个结果,你得到一个数组,表的列名为键,值为空。 如。
Array(
'product_id' => null,
'sku' => null,
'price' => null,
...
)
之后,您可以使用PHP函数array_keys($result)轻松获取表的列名。
调查:
mysql_query('DESCRIBE '.$table);
我需要列名作为平面数组,而其他答案返回关联数组,所以我使用:
$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
)
我做了一个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
... )
对不起死灵,但我喜欢我的功能;)
附注:我没有包括类核心,但你可以使用自己的类。科学博士
$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);
}