提问者:小点点

php PDO:获取表的列名称


如何使用PDO从表中获取所有列名?

id         name        age
1          Alan        35      
2          Alex        52
3          Amy         15

我想要的信息是,

id         name        age

编辑:

这是我的尝试,

$db = $connection->get_connection();
$select = $db->query('SELECT * FROM contacts');

$total_column = $select->columnCount();
var_dump($total_column);

for ($counter = 0; $counter < $total_column; $counter ++) {
    $meta = $select->getColumnMeta($counter);
    $column[] = $meta['name'];
}
print_r($column);

然后我得到,

Array
(
    [0] => id
    [1] => name
    [2] => age
    ...

)

共3个答案

匿名用户

我用以下方法解决这个问题(仅限MySQL)

$q = $dbh->prepare("DESCRIBE tablename");
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_COLUMN);

匿名用户

这将适用于MySQL,Postgres,可能还有任何其他使用limit子句的PDO驱动程序。

注意:添加限制0是为了提高性能:

$rs = $db->query('SELECT * FROM my_table LIMIT 0');
for ($i = 0; $i < $rs->columnCount(); $i++) {
    $col = $rs->getColumnMeta($i);
    $columns[] = $col['name'];
}
print_r($columns);

匿名用户

我的2美分:

$result = $db->query('select * from table limit 1');
$fields = array_keys($result->fetch(PDO::FETCH_ASSOC));

您将在var$字段中以数组形式获得列名。