PHP fputcsv输出双记录

时间:2011-02-14 15:28:12

标签: php mysql csv fputcsv

我正在使用这个fputcsv代码:

$result = mysql_query('SELECT * FROM `mash`');
if (!$result) die('Couldn\'t fetch records');
$fp = fopen('testCSV.csv', 'w');
if ($fp && $result) {
    while ($row = mysql_fetch_array($result)) {
        fputcsv($fp, array_values($row));
    }
    die;
}
fclose($fp);

它输出的CSV很棒,但每个mysql列有两列(所以一切都加倍)

有谁能看出为什么会这样?

3 个答案:

答案 0 :(得分:6)

试试这个:

$result = mysql_query('SELECT * FROM `mash`');
if (!$result) die('Couldn\'t fetch records');
$fp = fopen('testCSV.csv', 'w');
if ($fp && $result) {
    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
        fputcsv($fp, array_values($row));
    }
    die;
}
fclose($fp);
默认情况下,mysql_fetch_array将返回一个组合数组,这将仅返回关联数组。或者使用MYSQL_NUM编号 - http://php.net/manual/en/function.mysql-fetch-array.php

答案 1 :(得分:1)

http://php.net/manual/en/function.mysql-fetch-array.php

mysql_fetch_array的第二个参数是这里的关键。默认是获取关联的ant int键。你可能想在这里传递MYSQL_ASSOC。

答案 2 :(得分:0)

mysql_fetch_array() 默认返回数字和关联索引

引用手册(强调我的):

  

返回一个字符串数组   对应于获取的行,或   如果没有更多行,则为FALSE。该   返回数组的类型取决于方式   result_type已定义。 使用   MYSQL_BOTH(默认),你会得到一个   具有关联和数字的数组   index。只使用MYSQL_ASSOC   得到关联指数(如   mysql_fetch_assoc()工作),使用   MYSQL_NUM,你只获得数字索引   (因为mysql_fetch_row()有效)。

<强>解决方案: