-1
Ich verstehe nicht, warum meine fputcsv
nicht funktioniert. Hier ist, was ich habe:php fputcsv funktioniert nicht
<?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;
?>
Es gibt keine Fehler exportiert nur eine leere Datei, obwohl er es richtig macht nennen. Die Datei sollte mehr als 30 Spalten und mehr als 10000 Zeilen für die meisten Berichte enthalten. Diese
ist, wie meine Fehlerberichterstattung gesetzt:
error_reporting(E_ALL|E_STRICT);//For use in trouble shooting
ini_set('display_errors', 'On');//For use in trouble shooting
definieren "nicht funktioniert". Irgendwelche Fehlermeldungen, Warnungen, Hinweise? Was hast du gegen das bekommen, was du erwartest? usw. Wenn Ihre error_reporting-Einstellung nicht mindestens auf E_ALL festgelegt ist, beheben Sie dies zuerst. – cHao
Es wäre auch hilfreich, eine MVCE zu erstellen. Ein Problem bezüglich 'fgetvsv()' braucht keine SQL oder Verwirrung mit HTTP-Headern. – HPierce
@cHao Es gibt keine Fehler, es exportiert nur eine leere Datei. Deshalb verwirrt Om. Wenn es einen Fehler gäbe, hätte ich etwas zu jagen, aber die Datei ist einfach leer und ich kann "echo" oder "print_r" sagen, damit ich weiß, dass sie geöffnet wird. Nur die 'fputcsv' scheint nicht zu funktionieren. – Mike