php - 显示数组中的 mysql 列名及其数据

标签 php arrays

我正在尝试从 MySql 获取记录,并使用 PDO 将它们与列标题一起显示在 array 中,这是我这样做的原因是因为我想将它们导出到 Excel 中,并且我正在使用 php-excel

现在,以下代码在数组中完美地显示记录,我可以很好地导出它们

    while ($row[] = $stmt->fetch(PDO::FETCH_ASSOC)) :
        $data = $row;
    endwhile;

上述代码得到的数组如下

Array
(
    [0] => Array
        (
            [user_id] => 1
            [fname] => First Name
            [lname] => Last Name
        )

    [1] => Array
        (
            [user_id] => 91
            [fname] => First Name
            [lname] => Last Name
        )
)

但问题是我在 Excel 中缺少列标题,因此我还需要在数组中显示 MySql 列标题。

我使用以下代码为列标题创建一个数组

    for ($i = 0; $i < $stmt->columnCount(); $i++) {
        $col = $stmt->getColumnMeta($i);
        $columns[] = $col['name'];
    }

但这给了我一个以下格式的数组

Array
(
    [0] => user_id
    [1] => fname
    [2] => lname
)

而我需要以下格式的列标题数组

Array
(
    [0] => Array
        (
            [user_id] => user_id
            [fname] => fname
            [lname] => lname
        )
)

我将不胜感激任何帮助。

最佳答案

我假设您希望 header 位于同一数组中。在这种情况下,您可以在 while 循环之前执行此操作

$data[0] = array();
for ($i = 0; $i < $stmt->columnCount(); $i++) {
    $col = $stmt->getColumnMeta($i);
    $data[0][$col['name']] = $col['name'];
}

此外,while 循环的效率有点低。您将每一行插入 $row 数组,然后每次将其复制到 $data 中。应该这样做:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
    $data[] = $row;
endwhile;

这应该让你:

$data = Array
(
    [0] => Array
    (
        [user_id] => user_id
        [fname] => fname
        [lname] => lname
    )
    [1] => Array
    (
        [user_id] => value...
        ...
    )
    ...
)

关于php - 显示数组中的 mysql 列名及其数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306052/

相关文章:

c++ - 需要将 ifstream 输入文件转换为我可以循环和解密的格式

Java从 map 列表中删除元素

ios - 获取数据但无法正确显示

javascript - 1个按钮 2个功能

php - Insert on duplicate key update 始终更新所有值

php - 使用连接从多个表中选择列

php - 有人对从 ColdFusion 的 serializeJSON 方法到 PHP 的 json_decode 有问题吗?

Java 8 Lambda 将 Number[][] 转换为 double[][]

php - 警告 : Illegal string offset 'custom_css_post_id'

Java:多项选择游戏使用哪种结构