我想从查询结果中获取带有PDO的字幕列名

时间:2019-02-02 07:59:10

标签: php

我有一个查询等,

$dbh = new PDO("mysql:host=$servername;dbname=mysummary", $username, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try {
$dbh->query("SET SESSION group_concat_max_len = 250000");
$dbh->query("set @sql = null");
$dbh->query("SELECT GROUP_CONCAT(DISTINCT
    CONCAT(
        'MAX(IF(binna = ''', binna, ''', `value`, NULL)) AS ', CONCAT(\"`\",binnu ,\"`\")) ORDER BY se ASC
    ) INTO @sql
    FROM `summarypt`.`IMSY` ORDER BY se DESC;");
$dbh->query("SET @sql = CONCAT('SELECT W_id, ', @sql, ' FROM 
                    `summarypt`.`IMSY` GROUP BY W_id ORDER BY W_id');");

$dbh->query("PREPARE stmt FROM @sql;");
$result = $dbh->query("EXECUTE stmt")->fetchALL(PDO::FETCH_NUM);

}
catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

其给出结果等上的MySQL工作台 (I进行的查询与MySQL工作台和移植到PHP)

id    2    2    3    4
1    21   null  0    0
2    null  7    0    0
3    null  9    0    0

我的问题在这里。我无法用我的PHP代码得到列名(ID 2 2 3 4)。我尝试了FETCH_NUM,FETCH_ASSOC,FETCH_BOTH,但是它们没有从$ result数组键中给我想要的列名。 请帮帮我。 谢谢

1 个答案:

答案 0 :(得分:0)

尝试getColumnMeta

$stmt = $dbh->query("EXECUTE stmt");
$count = $stmt->columnCount();
for($i = 0; $i < $count; $i++)
{
    $colMeta = $stmt->getColumnMeta($i);
    // $colMeta['name']
}