php - 下载 csv 但带逗号的行是空白的

标签 php mysql

伙计们,我得到的代码确实有效,但数据库中的某些行的值带有逗号,这些行被下载为空白。解决这个问题的方法是什么?

这是我的php

<?php

require_once('config.php');

$y = $_REQUEST['y'];
$m = $_REQUEST['m'];
$date = "$y-$m";
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=Data-Backup-' . $date . '.csv');
$select_table = mysql_query("SELECT * FROM records WHERE DATE_FORMAT(data_submitted, '%Y-%m') = '$date'  ORDER BY ID DESC");
$rows = mysql_fetch_assoc($select_table);

if ($rows) {
    getcsv(array_keys($rows));
}

while ($rows) {
    getcsv($rows);
    $rows = mysql_fetch_assoc($select_table);
}

function getcsv($no_of_field_names)
{
    $separate = '';
    foreach ($no_of_field_names as $field_name) {
        if (preg_match('/\\r|\\n|,|"/', $field_name)) {
            $field_name = '' . str_replace('', $field_name) . '';
        }
        echo $separate . $field_name;
        $separate = ',';
    }
    echo "\r\n";
}

?>

最佳答案

您可以使用fputcsv

$output = fopen('php://output', 'w');

$count = 0;
while($row = mysql_fetch_assoc($select_table)) {
    if ($count == 0) {
        // header
        fputcsv($output, array_keys($row));
    }

    fputcsv($output, array_values($row));

    $count++;
}

fpassthru($output);

关于php - 下载 csv 但带逗号的行是空白的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45902597/

相关文章:

PHP循环替换字符串 "one-by-one"中的字符

php - Sphinx 搜索 php - 良好实践

mysql - 我如何找到特定月份的行数并考虑所有日期

MySql 通过检查日期选择记录,而在数据库中只有日期的整数字段而不是日期格式的字段

mysql - 数据库中的三元关系

MYSQL MAX和Min查询

php - 如何对所有查询启用自动mysql真正转义?

php - SQL -- IF EXISTS 不起作用

php - 为新的 LDAP 用户设置密码

php - 如何发布到具有一对多关系的多个数据库表