php - 从 PDO 查询返回一个包含列名的二维数组

标签 php mysql json pdo

我想做的是将数据库查询的结果集直接传递到 Google DataTable 中。 (Google visualization api here)。

我的目标(至少这是我能想到的使用方式,是使用 Google 的 ArrayToDataTable() 函数。为此,我需要我的查询返回一个二维数组,我可以将其传递给此函数。我最初尝试使用 PDO::FETCH_ASSOC 来执行此操作,但是当我将结果编码为 JSON 时,我得到了一个行对象数组,谷歌的 API 无法处理。然后我找到了 this question ,并使用 PDO::FETCH_NUM ,我得到一个二维数组,它更接近我想要的,但它省略了列标题。

有没有一种简单的方法可以得到一个二维数组,其第一个条目是列名,每个后续条目都是来自数据库查询的一行?我认为这很简单,但如果不编写一个函数来实现,我找不到解决方案。

谢谢, -埃里克

编辑:

为了回应 Michael 的回答,我这样写:

function assocTo2dArray($array){
    $return = array();
    $return[] = array_keys($array[0]);
    foreach($array as $row){
        $return[] = array_values($row);
    }
    return $return;
}

它实现了相同的结果,但看起来更干净一些。

最佳答案

这假设您已经构建并执行了一个准备好的语句(名为 $stmt)。

$results = array();

$n = 0;
$fetchmode = PDO::FETCH_ASSOC;
while (true) {
    $row = $stmt->fetch($fetchmode);

    if ($row == null)
        break;

    if ($n == 0) {
        $results[0] = array(); //headers
        $results[1] = array(); //first row
        foreach ($row as $k => $v) {
            $results[0][] = $k;
            $results[1][] = $v;
        }

        $fetchmode = PDO::FETCH_NUM;
    } else {
        $results[] = $row;
    }

    $n++;
}

这应该可以满足您的需求。

关于php - 从 PDO 查询返回一个包含列名的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21614845/

相关文章:

c# - ExtJS:如何使用 asp.net mvc 返回带有数据的 json 成功

php - 如何在 wordpress 导航中不影响子项的情况下突出显示处于事件状态的父项?

MySQL 外键引用 WHERE 字段=值

带有mysql的PHP Dropdownlist表单

mysql - 创建与现有表具有相同字段的 mysql 表

java - 如何对 JSON 解析进行单元测试

PHP 与 NetBeans : Applying new PhpDoc without the actual declaration

php - 使用php更新mysql中的记录

javascript - 如果我们在 php 中选择了错误的文件,如何停止提交

javascript - Firebase 数据库规范化