2

我正在使用这个 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 列有两列(所以一切都翻了一番)

谁能明白为什么会这样?

4

3 回答 3

7

试试这个:

$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

于 2011-02-14T15:36:38.493 回答
1

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

mysql_fetch_array 的第二个参数是这里的关键。默认是同时获取 assoc ant int 键。您可能想在此处传入 MYSQL_ASSOC。

于 2011-02-14T15:35:44.330 回答
0

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

引用手册(强调我的):

返回与获取的行相对应的字符串数组,如果没有更多行,则返回 FALSE。返回数组的类型取决于 result_type 的定义方式。通过使用 MYSQL_BOTH(默认),您将获得一个包含关联索引和数字索引的数组。使用 MYSQL_ASSOC,你只能得到关联索引(因为 mysql_fetch_assoc() 有效),使用 MYSQL_NUM,你只能得到数字索引(因为 mysql_fetch_row() 有效)。

解决方案:

于 2011-02-14T15:35:15.737 回答