Экспорт mysqli в csv php

Я экспортирует данные из базы данных и все работает почти корректно, но когда файл скачивается он добавляет и мусора к файлу. Вот пример кода

function export_csv(){
  global $conn;
  $sql=$_SESSION['export'];
    $csv_export = '';
    $csv_filename="requests.csv";
    // query to get data from database
    $query = $conn->query($sql);
    $field = mysqli_field_count($conn);

    // create line with field names
    for($i = 0; $i < $field; $i++) {
        $csv_export.= mysqli_fetch_field_direct($query, $i)->name.',';
    }

    // newline (seems to work both on Linux & Windows servers)
    $csv_export.= '
    ';

    // loop through database query and fill export variable
    while($row = mysqli_fetch_array($query)) {
        // create line with field values
        for($i = 0; $i < $field; $i++) {
            $csv_export.= '"'.$row[mysqli_fetch_field_direct($query, $i)->name].'",';
        }
        $csv_export.= '
    ';
    }

    // Export the data and prompt a csv file for download
    header("Content-type: text/x-csv");
    header("Content-Disposition: attachment; filename=".$csv_filename."");
    echo($csv_export);
     exit;       }

Функцию я вызываю при нажатии на кнопку. Вот исходные данные введите сюда описание изображения

Как убрать все до 30 строки?


Ответы (1 шт):

Автор решения: Jug-IT

Переписать функцию export_csv() следующим образом:

<?php
function export_csv() {
    global $conn;
    $sql=$_SESSION['export'];
    $csv_filename="requests.csv";
    // query to get data from database
    $query = $conn->query($sql);
    $field = mysqli_field_count($conn);
    // check count of fields
    if ($field > 0) {
        // create line with field names
        for($i = 0; $i < $field; $i++) {
            $csv_export = mysqli_fetch_field_direct($query, $i)->name.','.PHP_EOL;
        }

        // loop through database query and fill export variable
        while($row = mysqli_fetch_array($query)) {
            // create line with field values
            for($i = 0; $i < $field; $i++) {
                $csv_export.= '"'.$row[mysqli_fetch_field_direct($query, $i)->name].'",'.PHP_EOL;
            }
        }

        // Export the data and prompt a csv file for download
        header("Content-type: text/x-csv");
        header("Content-Disposition: attachment; filename=".$csv_filename."");
        echo($csv_export);
    }
}
?>

Удалить коде перед функцией export_csv(), содержащий html-код. А также, в файле

D:\DepOnline\funcs\funcs_admin.php

закомментировать include_once('D:\/!sys_func.php');

→ Ссылка