Создание таблицы Excel из базы данных MySql с использованием PHP - PullRequest
0 голосов
/ 05 марта 2012

Я новичок в PHP. Я использую следующий код для создания листа Excel из базы данных Mysql с использованием PHP.

<?php
    include("../Connection/Connection.php");
    $db_con=new Connection();
    $db_con->get_connection();  //Opens a database connection. This function is contained in the  Connection.php which is included above.

    $result = mysql_query("SELECT * FROM country");
    if (!$result) die('Couldn\'t fetch records');
    $num_fields = mysql_num_fields($result);
    $headers = array();

    for ($i = 0; $i < $num_fields; $i++) 
    {
        $headers[] = mysql_field_name($result , $i);
    }

    $fp = fopen('php://output', 'w');
    if ($fp && $result)
    {
            header('Content-Type: text/csv');
            header('Content-Disposition: attachment; filename="export.csv"');
            header('Pragma: no-cache');
            header('Expires: 0');
            fputcsv($fp, $headers);

            while ($row = mysql_fetch_array($result)) 
            {
                 fputcsv($fp, array_values($row));
            }
            die;
     }
?>

Приведенный выше код работает и генерирует указанный файл export.csv, но проблема в том, что он генерирует каждый столбец из MySql в этом файле дважды. Другими словами, каждый столбец дублируется дважды (хотя отображаемые заголовки не дублируются). Что не так с этим кодом? Какие изменения необходимо внести, чтобы каждый столбец отображался ровно один раз?

1 Ответ

2 голосов
/ 05 марта 2012

Вместо этого используйте mysql_fetch_row.

mysql_fetch_array выбирает массив с обоими строковыми и числовыми индексами, поэтому каждое значение выбирается дважды.Ваш код будет работать с mysql_fetch_assoc или mysql_fetch_row.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...