PHP fputcsv输出双记录
我正在使用以下fputcsv代码:PHP fputcsv输出双记录,php,mysql,csv,fputcsv,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_v
$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列有两个列(因此所有内容都加倍)
有人知道为什么会这样吗?默认情况下返回数字索引和关联索引:
引用手册(强调我的):
返回一个字符串数组,该字符串
对应于获取的行,或
如果没有更多行,则为FALSE。这个
返回数组的类型取决于返回的方式
结果类型已定义通过使用
MYSQL_两者(默认),您将获得一个
同时具有关联和数字的数组
索引。使用MYSQL\u ASSOC,您只需要
获取关联索引(如图所示)
mysql_fetch_assoc()工作),使用
MYSQL_NUM,您只能获得数字索引
(正如mysql_fetch_row()工作一样)
解决方案:
- 使用
- 或者:
mysql\u fetch\u数组($result,mysql\u ASSOC)
$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_数组将返回一个组合数组,这将仅返回关联数组。或者将MYSQL_NUM用于numbered-如果查询失败,则会导致程序结束,因此以后检查
$result
没有意义,因为它不可能为false。您还可以在循环结束程序后,在关闭文件指针之前,die
。为什么?非常感谢你的回答。我遇到了这篇文章中描述的问题,你的回答完美地解决了我面临的问题。非常感谢。