从查询中获取PDO的列名

时间:2016-02-10 05:16:47

标签: php mysql pdo

我想将我的代码从使用mysql转换为pdo。 我正在寻找mysql_field_name的等效函数,但我没有找到任何,除了这个函数PDOStatement :: getColumnMeta,但PHP文档说它"实验"它不会与未来的PHP版本一起使用。 所以我做了这个工作。

假设我有这张表

id         name        age       city
1          ad          25         a      
2          im          23         b
3          sh          21         c 

我想只选择名称和城市

 name       city
  ad          a      
  im          b
  sh          c 

    $link = new PDO("mysql:host=localhost;dbname=db_name;charset=utf8",user,pass);
    $link->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $query="SELECT name,city FROM  table" ;
    $result = link->prepare($query);
    $result->execute();
    $result ->fetchAll(PDO::FETCH_ASSOC);

    foreach ($result as $value){
        $tablename =array_keys($value);
    }

    echo "<table><tr>";
    foreach ($tablename  as $key)
        echo "<td>".$key."</td>";
    echo "</tr></table>";

我不确定这是否是正确的方法。 或者如果有PDO功能可以做这项工作

3 个答案:

答案 0 :(得分:1)

您可以获得这样的列名

 foreach ($result as $row){
    foreach($row as $col_name => $val)
     {
     echo "$col_name == $val<br />";    
     }
    echo"Next Row<br />";
 }

答案 1 :(得分:0)

假设您有一个名为 table

的表
$select = $db->query('SELECT * FROM table');

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

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

$ column将包含完整的列列表,而列meta是一个可以帮助您获取列属性的函数。

由于 阿米特

答案 2 :(得分:-1)

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