在csv中下载数据库记录但得到空白行

downloading db records in csv but getting blank rows

伙计们,我的代码从 mysql 下载记录作为 csv,但无论行中有任何带逗号的值,它都不会下载,我得到一个空白行

这个问题的解决方案是什么

这是我的代码

require_once('config.php');
$u =$_REQUEST['u'];
$cs =$_REQUEST['cs'];
$y =$_REQUEST['y'];
$d =$_REQUEST['d'];
$m =$_REQUEST['m'];
$date = "$y-$m-$d";
$todays = date("d-m-Y");
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=Mortgage-'.$u.'-Records-'.$date.'.csv');
//select table to export the data
$select_table=mysql_query("SELECT * FROM records WHERE  user ='".$u."' AND status ='".$cs."' AND DATE_FORMAT(posted, '%Y-%m-%d') = '$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);
}

// get total number of fields present in the database
function getcsv($no_of_field_names)
{
$separate = '';


// do the action for all field names as field name
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;

//sepearte with the comma
$separate = ',';
}

//make new row and line
echo "\r\n";
}

非常感谢您的宝贵时间和帮助

像这样更改代码的第一部分:

require_once('config.php');
$u =$_REQUEST['u'];
$cs =$_REQUEST['cs'];
$y =$_REQUEST['y'];
$d =$_REQUEST['d'];
$m =$_REQUEST['m'];
$date = "$y-$m-$d";
$todays = date("d-m-Y");
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=Mortgage-'.$u.'-Records-'.$date.'.csv');
//select table to export the data
$select_table=mysql_query("SELECT * FROM records WHERE  user ='".$u."' AND status ='".$cs."' AND DATE_FORMAT(posted, '%Y-%m-%d') = '$date'  ORDER BY id DESC");

$i = 0;
while($rows = mysql_fetch_assoc($select_table);)
{
    if($i === 0) {
        getcsv(array_keys($rows));
    }

    getcsv($rows);
    $i++;
}

并在函数 getcsv 中进行此更改 - 替换此代码:

$field_name = '' . str_replace('', $field_name) . '';

有了这个:

$field_name = '"' . $field_name . '"';

但不要使用 mysql_query 尝试实施 PDO,因为 mysql lib 被修剪为 mysql 注入并且将在新的 php 版本中被弃用。