【发布时间】:2016-01-14 13:16:08
【问题描述】:
这种在 csv 上导出数据的方法以前在其他项目中也可以使用,但是我无法在此处进行此操作,并且我不确定如何为这种情况启用错误。
这个 PHP 文件创建一个逗号分隔的文件,其中包含一个带有单个选项卡(“ID”)的初始行,然后它应该为来自 DB 的 SELECT 查询上的每个匹配项创建一行
<?php
session_start();
ob_start();
include('conexionbbdd.php');
$file='informes/expositores_'.time().'.xls';
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$file");
header("Pragma: no-cache");
header("Expires: 0");
$output = fopen($file, 'w');
fwrite($output, chr(239) . chr(187) . chr(191));
fputcsv($output, array('ID'), "\t");
// fetch the data
$rows1 = mysqli_query($con, "SELECT ex_id FROM expositores WHERE ex_id = '26'");
// loop over the rows, outputting them
while ($row1 = mysqli_fetch_assoc($rows1)) {
fputcsv($output, $row1, "\t");
}
fclose($output);
echo $file;
ob_end_flush();
?>
在这种特殊情况下,我已将其简化为 maximu,因此,除了初始行之外,还应创建一个包含“26”的唯一行(我已测试该查询可与 PhpMyAdmin 一起使用,ID 为 26) .但事实并非如此。
它只从第一个fputcsv 方法正确地创建第一行:
fputcsv($output, array('ID'), "\t");
似乎没有其他行被提取或放置在 CSV 中。
由于整个 PHP 文件的目的是创建 CSV 文件,因此不会显示错误,因为它不会在新窗口中打开。
输出:
【问题讨论】:
-
问题是什么?你检查过你的错误日志吗?在您打开
<?php标记error_reporting(E_ALL); ini_set('display_errors', 1);后立即在文件顶部添加错误报告 -
我认为你必须插入值而不是插入数组
fputcsv($output, $row1['ex_id'], "\t"); -
如果
ex_id是一个int,那么去掉引号WHERE ex_id = 26"); -
@JayBlanchard 让我解决了这个问题。我在一个mysql项目上使用了myslqi。我不知道如何查看此案例的错误。请输入答案以打勾并为其他用户解释。
-
其实这个问题应该用stackoverflow.com/questions/17498216/…结束