-1
Я не понимаю, почему мой fputcsv
не работает. Вот что я получил:php fputcsv не работает
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$id = $_GET['Id'];
include('DBConn.php');
$query = $conn->prepare('SELECT QName, tsql from pmdb.QDefs WHERE Id = ' . $id);
$query->execute();
$qdef = $query->fetch(PDO::FETCH_ASSOC);
// Create and open file for writing
$filepath = 'exports/';
$filename = $qdef['QName'] . '.csv';
//$filename = $qdef['QName'] . '.csv';
try
{
$openFile = fopen($filepath . $filename,'w');
header('Content-Encoding: UTF-8');
header('Content-Type: text/csv; charset:UTF-8');
header('Content-Disposition: attachment; filename="' . $filename . '"');
}
catch(Exception $e)
{
echo "Something went wrong<br>";
die(print_r($e->getMessage()));
}
// Use returned tsql field as query for dataset
$tsql = $qdef['tsql'];
//echo "tsql<br>"; print_r($tsql); //This was to make sure that I'm getting the correct query
$query = $conn->prepare($tsql);
$query->execute();
// Output data to CSV file
$headers = NULL;
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
//Write column headings to file
if (is_null($headers))
{
$headers = array_keys($row);
if ($headers[0] == 'ID')
$headers[0] = 'Id';
fputcsv($openFile, $headers); //This is doing nothing The headers from here don't get printer to the file
//print_r($headers); //This was to check and see if the headers exist
print_r($openFile);echo ","; //This is to see what is returned from the fopen -> it returns "Resource is #4"
foreach($headers as $Header)
{
echo $Header. ","; //This was to print the headers to see if I can write to the file. I can the headers print.
}
}
//Write data
$modRow = preg_replace('/ \d{2}:\d{2}:\d{2}\.\d{3}/', '', $row);
/*
$modRow = str_replace('\r\n', " ", $modRow);
$modRow = str_replace('\n\r', " ", $modRow);
$modRow = str_replace('\n', " ", $modRow);
$modRow = str_replace('\r', " ", $modRow);
*/
fputcsv($openFile, $modRow, ',','"');//print_r($modRow); //The rows don't get added to the file from here like they should, but I also don't get any error.
}
// Close file
fclose($openFile);
//echo $filepath . $filename;
?>
Там нет ошибок Это просто экспортирует пустой файл, хотя это имя правильно. Для большинства отчетов файл должен содержать более 30 столбцов и 10000 строк.
Это как установить мой отчет об ошибках:
error_reporting(E_ALL|E_STRICT);//For use in trouble shooting
ini_set('display_errors', 'On');//For use in trouble shooting
Определение "не работает". Любые сообщения об ошибках, предупреждения, уведомления? Что вы получили против того, чего вы ожидаете? и т. д. Если ваш параметр error_reporting не установлен на E_ALL, по крайней мере, исправьте это первым. – cHao
Было бы также полезно создать MVCE. Проблема в отношении 'fgetvsv()' doens't нуждается в SQL или messing с заголовками HTTP. – HPierce
@cHao Нет ошибок, он просто экспортирует пустой файл. Вот почему Ом смутился. Если бы была ошибка, у меня было бы кое-что, чтобы преследовать, но файл просто пуст, и я могу «echo» или «print_r», чтобы я знал, что он открывается. Просто 'fputcsv', похоже, не работает. – Mike