Я пытаюсь запустить следующий код
$query = sprintf('SELECT * FROM custfail');
$result = mysql_query($query, $conn) or die(mysql_error($conn));
/*
* send response headers to the browser
* following headers instruct the browser to treat the data as a csv file called export.csv
*/
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=custfail.csv');
/*
* output header row (if atleast one row exists)
*/
$row = mysql_fetch_assoc($result);
if ($row) {
echocsv(array_keys($row));
}
/*
* output data rows (if atleast one row exists)
*/
while ($row) {
echocsv($row);
$row = mysql_fetch_assoc($result);
}
/*
* echo the input array as csv data maintaining consistency with most CSV implementations
* - uses double-quotes as enclosure when necessary
* - uses double double-quotes to escape double-quotes
* - uses CRLF as a line separator
*/
function echocsv($fields)
{
$separator = '';
foreach ($fields as $field) {
if (preg_match('/\\r|\\n|,|"/', $field)) {
$field = '"' . str_replace('"', '""', $field) . '"';
}
echo $separator . $field;
$separator = ',';
}
echo "\r\n";
Когда я запускаю код, я получаю файл CSV со следующей ошибкой, расположенной в нем
<b>Fatal error</b>: Call to undefined function echocsv() in <b>*snip*</b> on line <b>31</b><br />
Номер строки не связан с кодом, опубликованным, так как я удалил некоторый предыдущий код (оператор проверки пароля (в который встроен этот код) и детали подключения SQL), но это происходит при вызове этой функции,
$row = mysql_fetch_assoc($result);
if ($row) {
echocsv(array_keys($row));
}
Кто-нибудь может указать мне в правильном направлении
Благодаря помощи @RamSharma в его комментариях к вопросу. проблема заключалась в том, что у меня была функция внизу страницы, после того, как она была вызвана
Решение состояло в том, чтобы переместить функцию в строки над вызовом
Если вы используете «сырой» скрипт * .php, вам нужно определить функцию перед вызовом, основываясь на чтении здесь: http://php.net/manual/en/functions.user-defined.php
«Функции не должны быть определены до того, как на них будут ссылаться, кроме случаев, когда функция определена условно (…)»