使用PHP从MySql数据库生成Excel工作表

时间:2012-03-05 16:52:22

标签: php excel

我是PHP的新手。我正在使用以下代码使用PHP从Mysql数据库生成Excel工作表。

<?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 个答案:

答案 0 :(得分:2)

改为使用mysql_fetch_row

mysql_fetch_array使用BOTH字符串索引和数字索引获取数组,因此每个值都会被提取两次。您的代码可以使用mysql_fetch_assocmysql_fetch_row