【问题标题】:Enabling PHP errors when creating a CSV file from database从数据库创建 CSV 文件时启用 PHP 错误
【发布时间】: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 文件,因此不会显示错误,因为它不会在新窗口中打开。

输出:

【问题讨论】:

  • 问题是什么?你检查过你的错误日志吗?在您打开 &lt;?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/…结束

标签: php mysql csv


【解决方案1】:

为了解决这个问题,您需要能够查看错误。您可以在打开&lt;?php 标记error_reporting(E_ALL); ini_set('display_errors', 1); 后立即查看错误日志或在文件顶部添加错误报告

【讨论】:

  • 启用错误后,很明显我是在一个mysql项目上使用mysqli。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2011-08-27
  • 2014-07-23
  • 1970-01-01
  • 2015-03-09
  • 2016-11-17
  • 2012-01-23
相关资源
最近更新 更多