我正在使用这个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列有两列(所以一切都加倍)
有谁能看出为什么会这样?
答案 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()有效)。
<强>解决方案:强>
mysql_fetch_assoc()
mysql_fetch_array($result, MYSQL_ASSOC)