我正在尝试从 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/