我是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中的每一列两次。换句话说,每列重复两次(显示的标题不会重复)。这段代码有什么问题?应该进行哪些更改,以便它只显示一列一次?
答案 0 :(得分:2)
改为使用mysql_fetch_row
。
mysql_fetch_array
使用BOTH字符串索引和数字索引获取数组,因此每个值都会被提取两次。您的代码可以使用mysql_fetch_assoc
或mysql_fetch_row
。