从下载按钮导出.csv文件

时间:2016-01-25 15:28:06

标签: php csv pdo export-to-excel

编辑:我将“echo($ row)”更改为“print_r($ row)”,现在正在下载的csv将每个数组括在括号中,并提供所有提到的数据,但是如何自定义所有数据的方式打印?

现在,正在打印:

阵列( [ID] =→1 [姓名] => “中提米” ) 阵列( ....

(其中每一行是Excel电子表格中的下一行)

我如何制作此输出以便每条记录都有自己的行?例如,excel中的第一列是id,那么第二列是firstname,每条记录都是自己的行吗?

我的main.php中有一个链接:

<a class="btn" href="export.php">Export</a>

然后这是我的export.php文件:

<?php

//open database connection
try {
    $db = new PDO('mysql:host=localhost;dbname=DBNAME;charset=utf8',
                    'DBUSER',
                    'DBPASS');

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
catch(PDOException $ex) {
    echo "did not connect...";
}

header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=exported-data.csv');

$sql = "SELECT * FROM table_name;";

$sth = $db->prepare($sql);
$sth->execute();

$filename = date('d.m.Y').'.csv';

$data = fopen($filename, 'w');

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    fputcsv($data, $row);
    print_r($row);
}

echo "\r\n";

fclose($data);

?>

2 个答案:

答案 0 :(得分:5)

为了将关联数组正确放入文件中,您需要解析数组,然后将该行放在文件中:

.

答案 1 :(得分:1)

我假设您的输出应该是一个csv文件,日期作为文件名,我是否正确?

你可以试试这个:

更新代码

<?php

//open database connection
try {
    $db = new PDO('mysql:host=localhost;dbname=DBNAME;charset=utf8',
                    'DBUSER',
                    'DBPASS');

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
catch(PDOException $ex) {
    echo "did not connect...";
}

$sql = "SELECT * FROM table_name";

$sth = $db->prepare($sql);
$sth->execute();

$filename = date('d.m.Y').'.csv';

$data = fopen($filename, 'w');

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    fputcsv($data, $row);
}

fclose($data);


?>

代码将因为&#34;。&#34;而破坏。是在错误的地方。

$filename = date('d.m.Y').'.csv'; $filename = 'date('d.m.Y').'.csv';

不同

@ NoReceipt4Panda:我无法发表评论,因此代码已更新。 您应该使用 $sth = $db->prepare($sql);而不是$sth = $conn->prepare($sql); 您没有名称为$conn的变量。