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.
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?