您的代码旨在将产品数组转换为 CSV 文件,但您遇到了导致单行输出的问题没有正确的下载标头。
单行输出的根本原因在于构建 CSV 内容的嵌套循环。考虑使用 fputcsv() 函数简化流程,而不是手动构建 CSV。这简化了流程并确保格式正确。
要触发文件下载,您需要设置适当的 HTTP 标头。具体操作方法如下:
<code class="php">header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=your_desired_name.csv");</code>
但是,提供的代码将 CSV 文件直接写入输出流,从而使您可能用于客户端处理的 JavaScript 库无法访问它。
这是使用 fputcsv() 解决这些问题的替代方法:
<code class="php">$sql = "SELECT id, name, description FROM products"; if($result = $mysqli->query($sql)) { $output = fopen("php://output",'w') or die("Can't open php://output"); header("Content-Type:application/csv"); header("Content-Disposition:attachment;filename=pressurecsv.csv"); fputcsv($output, array('id','name','description')); while($p = $result->fetch_array()) { fputcsv($output, $p); } fclose($output) or die("Can't close php://output"); }</code>
此代码创建 CSV 文件并将其流式传输到输出缓冲区。 fputcsv() 函数自动处理格式化和转义值。最后一行关闭输出流,释放资源。
以上是将 PHP 数组转换为 CSV 时如何处理单行输出和文件下载?的详细内容。更多信息请关注PHP中文网其他相关文章!