-1

目标:从 MySQL 数据库中检索单个记录(行),供用户通过浏览器界面下载为 CSV(例如,根据用户会话 ID 显示“获取记录”的按钮,(作为数据库中的字段) .

[他们刚刚填写了一个表格,该表格连同会话 ID 一起写入数据库,我希望他们能够以 CSV 格式下载他们的条目]

我了解 PDO 是提高安全性和有效性的方法(尽管对其他建议持开放态度),但我认为我要么语法错误,要么遗漏了一些东西。

据我了解,我必须让 PDO 调用正确的记录,然后将其导出为 CSV(2 个步骤)。

我尝试将我从类似问题中找到的代码混合在一起,但坦率地说,这是一团糟 - 所以不值得发布。

任何关于我需要做什么的指导/解释将不胜感激。

4

1 回答 1

0

您可以让 MySQL 通过单个查询为您创建 CSV。如SELECT ... INTO语法中所述:

这是一个生成许多程序使用的逗号分隔值 (CSV) 格式的文件的示例:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

然后您只需要将创建的文件返回给用户,例如使用readfile().

但是,要按照您当前的方式进行操作,您可以执行以下操作:

$dbh = new PDO("mysql:dbname=$dbname;charset=utf8", $username, $password);
$qry = $dbh->query('SELECT a,b,a+b FROM test_table');

$fp = fopen('php://output', 'w');
while ($row = $qry->fetch(PDO::FETCH_NUM)) fputcsv($fp, $row);
fclose($fp);
于 2012-09-10T08:25:44.180 回答