#php #mysql #fputcsv
Вопрос:
Я пытаюсь экспортировать данные из таблицы MySQL в формат CSV, который мой клиент должен регулярно отправлять по электронной почте.
Вот что содержит мой PHP-файл:
require('db.php');
// output headers so that the file is downloaded rather than displayed
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=stoneleigh.csv');
// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
// output the column headings
fputcsv($output, array('CLUB NAME', 'NUMBER', 'TITLE', 'TYPE', 'FORENAME', 'SURNAME', 'ADDRESS1', 'ADDRESS2', 'ADDRESS3', 'ADDRESS4', 'POSTCODE', 'PHONE', 'EMAIL', 'MOBILE'));
//create query
$sql = "SELECT Club_Name,BHS,Title,Type,Forename,Surname,Address1,Address2,Address3,Address4,Postcode,Phone,Email,Mobile FROM tvrc_members WHERE Current = '1'";
$rows = $conn->query($sql);
// loop over the rows, outputting them
while ($row = fetch_assoc($rows)) {fputcsv($output, $row);}
require('foot.php');
К сожалению, когда я ссылаюсь на свой PHP-файл, он загружает файл CSV, который содержит только заголовки столбцов и никаких фактических данных ниже, любая помощь приветствуется. Спасибо.
Комментарии:
1.используйте либо: объективный стиль,
$rows->fetch_assoc()
либо процедурный стильmysqli_fetch_assoc($rows)
2.
$row = fetch_assoc($rows)
должно привести к фатальной ошибке: Неперехваченная ошибка: Вызов неопределенной функции fetch_assoc()3. где объективный означает объектно-ориентированный… объективно говоря 🙂
Ответ №1:
Согласно комментарию @berend, я изменил свою последнюю строку на
while ($row = $rows->fetch_assoc()) {fputcsv($output, $row);}
и это работает.