【发布时间】:2014-03-03 23:14:05
【问题描述】:
我希望能够将表列的名称与查询结果一起导出到 .csv 文件中。我找到了一些使用 mysql_ 的示例,但我希望有人能在我尝试使用 PDO 时帮助我。来自 $sql 的数据导出得很好,但我无法将列名导出为第一行。
<?php
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=brewlog.csv");
header("Pragma: no-cache");
header("Expires: 0");
//Database Connection
include"connect.php";
//Assign variables from POST
$beer = $_POST['beer'];
//SQL Query for Data
$sql = "SELECT * FROM brewlog WHERE Beer = :beer ORDER BY BrewDate DESC";
//Prepare Query, Bind Parameters, Excute Query
$STH = $DBH->prepare($sql);
$STH->bindParam(':beer', $beer);
$STH->execute();
//Get Column Names for Header
$STMT = $DBH->query('SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = \'database\' AND TABLE_NAME = \'my_table\'');
$header = $STMT->fetchAll(PDO::FETCH_NUM);
//Export to .CSV
$fp = fopen('php://output', 'w');
fputcsv($fp,$header);
while ($row = $STH->fetch(PDO::FETCH_NUM)) fputcsv($fp,$row);
fclose($fp);
?>
【问题讨论】:
-
这与您使用的数据库连接器无关:您应该获取关联行而不是数字数组。然后你将(结果集)列名作为数组键。
-
谢谢!我很感激。
标签: php mysql pdo export-to-csv