Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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_Fputcsv - Fatal编程技术网

Php fputcsv-在彼此下方插入列

Php fputcsv-在彼此下方插入列,php,fputcsv,Php,Fputcsv,对不起,这个标题,但我不知道如何更好地解释。我正在将两个表导出到csv文件,但最终的布局不是我所期望的,我真的不知道如何执行此操作,我知道的是: $sql = "SELECT a.number, a.location,a.confirmed etc etc FROM campain UNION ALL SELECT workerNumber, workerName, socialSecurity,day1nh,day1eh,day2nh,day2eh etc etc FROM timesheet

对不起,这个标题,但我不知道如何更好地解释。我正在将两个表导出到csv文件,但最终的布局不是我所期望的,我真的不知道如何执行此操作,我知道的是:

$sql = "SELECT a.number, a.location,a.confirmed etc etc FROM campain UNION ALL SELECT workerNumber, workerName, socialSecurity,day1nh,day1eh,day2nh,day2eh etc etc FROM timesheet";

$qry = $pdo->prepare($sql);
$qry->execute();
$filename = "exportcsv/file".time().".csv";
$data = fopen($filename, 'w');
$row = $qry->fetch(PDO::FETCH_ASSOC);

if ($row) 
{
    fputcsv($data,array_keys($row), $delimiter = ';');

    while ($row) 
    {
        $array = array_map("utf8_decode", array_values($row));
        fputcsv($data,$array, $delimiter = ';');
        $row = $qry->fetch(PDO::FETCH_ASSOC);
    }
 fclose($data); 
}
这导出了一个很好的csv,所有列都很好地分开,但它将所有内容并排显示,正如您所看到的,我有day1nh和day1eh等,而不是输出上的这个:

workerNumber workerName socialSecurity day1nh day1eh
我想要这个:

workerNumber workerName socialSecurity day1nh day2nh etc

                                       day1eh day2eh etc

为什么在调用中将分隔符分配给
fputcsv($data,$array,$delimiter=';')?我以为这就是解决问题的方法,但你认为这可能是我的问题吗?事实上,如果我删除那个分隔符,它会把一切都搞糟。我迷路了!!!不,我不认为这是你的问题。它仍然会过去;听电话。我只是想知道你为什么这样做。Tbh,我无法从您给出的描述中理解您的实际问题。好吧,当我打开csv文件时,所有内容都在一行中输出,我想要的是显示在彼此下方的天数。在csv文件中没有像day1nh和day1eh这样的两列…我只想要一列day1nh,在这一列下面(所以再多一行),它将显示day1eh