Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP fputcsv输出双记录_Php_Mysql_Csv_Fputcsv - Fatal编程技术网

PHP 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

我正在使用以下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列有两个列(因此所有内容都加倍)

有人知道为什么会这样吗?

默认情况下返回数字索引和关联索引:

引用手册(强调我的):

返回一个字符串数组,该字符串 对应于获取的行,或 如果没有更多行,则为FALSE。这个 返回数组的类型取决于返回的方式 结果类型已定义通过使用 MYSQL_两者(默认),您将获得一个 同时具有关联和数字的数组 索引。使用MYSQL\u ASSOC,您只需要 获取关联索引(如图所示) mysql_fetch_assoc()工作),使用 MYSQL_NUM,您只能获得数字索引 (正如mysql_fetch_row()工作一样)

解决方案:

  • 使用
  • 或者:
    mysql\u fetch\u数组($result,mysql\u ASSOC)

mysql_fetch_数组的第二个参数是这里的键。默认情况下,获取两个assoc ant int键。您可能想在此处传入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
。为什么?非常感谢你的回答。我遇到了这篇文章中描述的问题,你的回答完美地解决了我面临的问题。非常感谢。