oldcelt Posted May 28, 2021 Share Posted May 28, 2021 The code below worked perfectly on my old hosting service. I've had to move to a new host and I get this error when I try to run the code. Quote Warning: Cannot modify header information - headers already sent by (output started at ../user/dbconfig.php:11) This is the code:- <?php // connect to DATABASE! include_once('../user/dbconfig.php'); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $options = [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, \PDO::ATTR_EMULATE_PREPARES => false, ]; $dsn = "mysql:host=$host;dbname=$dbname;charset=$charset;port=$port"; try { // create a PDO connection with the configuration data $conn = new PDO($dsn, $user, $dbpassword, $options); } catch (PDOException $e) { // report error message echo $e->getMessage(); } $ans = $_POST['answer']; //Setup the filename that our CSV will have when it is downloaded. if($ans == 'yes'){ $fileName = 'answers-right.csv'; } elseif ($ans == 'no') { $fileName = 'answers-wrong.csv'; } // Create our SQL query. $sql = 'SELECT ID,email,firstname,lastname,message FROM checks WHERE answer = ?'; $stmt = $conn->prepare($sql); $stmt->execute([$ans]); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // NB: now using fetchAll because there's going to be more than one record //Get the column names. $columnNames = array(); if(!empty($rows)){ //We only need to loop through the first row of our result //in order to collate the column names. $firstRow = $rows[0]; foreach($firstRow as $colName => $val){ $columnNames[] = $colName; } } //If the file exists and is writeable then delete it if(is_writable($fileName)){ //Delete the file $deleted = unlink($fileName); } //Set the Content-Type and Content-Disposition headers to force the download. header('Content-Type: application/excel'); header('Content-Type: application/excel Content-Disposition: attachment; filename="' . $fileName . '"'); //Open up a file pointer $fp = fopen('php://output', 'w'); //Start off by writing the column names to the file. fputcsv($fp, $columnNames); //Then, loop through the rows and write them to the CSV file. foreach ($rows as $row) { fputcsv($fp, $row); } //Close the file pointer. fclose($fp); ?> Would appreciate some help please? Quote Link to comment https://forums.phpfreaks.com/topic/312804-php-mysql-to-csv-file-stopped-working/ Share on other sites More sharing options...
maxxd Posted May 28, 2021 Share Posted May 28, 2021 ../user/dbconfig.php outputs something - check that file. Quote Link to comment https://forums.phpfreaks.com/topic/312804-php-mysql-to-csv-file-stopped-working/#findComment-1586857 Share on other sites More sharing options...
oldcelt Posted May 28, 2021 Author Share Posted May 28, 2021 16 minutes ago, maxxd said: ../user/dbconfig.php outputs something - check that file. Thanks for your message - appreciated! ../user/dbconfig.php is just what it says. It simply contains the following:- <?php // connect to DATABASE! $host = 'localhost'; $user = 'username'; $dbpassword = 'mypassword'; $dbname = 'dbname'; $port = "3306"; $charset = 'utf8'; ?> What's most confusing is that all worked on my previous web host's servers. I've simply migrated the whole website so why is it now failing? Quote Link to comment https://forums.phpfreaks.com/topic/312804-php-mysql-to-csv-file-stopped-working/#findComment-1586858 Share on other sites More sharing options...
Barand Posted May 28, 2021 Share Posted May 28, 2021 Try removing the "?>" from the end of dbconfig.php Quote Link to comment https://forums.phpfreaks.com/topic/312804-php-mysql-to-csv-file-stopped-working/#findComment-1586862 Share on other sites More sharing options...
maxxd Posted May 28, 2021 Share Posted May 28, 2021 I'll lay good money Barand is spot-on. Don't close out your php files - if there's a trailing newline it'll be regarded as output to the browser, and some editors add a newline by default on save. Quote Link to comment https://forums.phpfreaks.com/topic/312804-php-mysql-to-csv-file-stopped-working/#findComment-1586867 Share on other sites More sharing options...
sagecelt Posted May 29, 2021 Share Posted May 29, 2021 Thanks guys, quite correct! I can't sign in for some reason at the moment. oldcelt Quote Link to comment https://forums.phpfreaks.com/topic/312804-php-mysql-to-csv-file-stopped-working/#findComment-1586890 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.