使用 foreach 和 while 生成 php 的 .csv 文件
Generate a .csv file with php using foreach and while
我试图生成一个 .csv 文件,但我得到的这个文件是空的。
所以我的代码是:
$fileName = 'Users_' . date('d-m-Y') . '.csv';
$fh = fopen($fileName, "w");
fputcsv($fh, array('EMAIL', 'NAME','SURNAME'), ";");
foreach ($aDataBases as $database) {
$sSql = sprintf('SELECT email, name, surname FROM users');
$rResult = Mysqli::query($sSql, $database);
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
fputcsv($fh, $aRecord['email'], ";");
fputcsv($fh, $aRecord['name'], ";");
fputcsv($fh, $aRecord['surname'], ";",'"');
}
}
fclose($fh);
文件已生成但为空,您能帮帮我吗?我做了一个 print_r() 并且在查询执行后有数据。我做错了什么?
您必须将此行更改为
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
fputcsv($fh, $aRecord['email'], ";");
fputcsv($fh, $aRecord['name'], ";");
fputcsv($fh, $aRecord['surname'], ";",'"');
}
到
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
fputcsv($fh, [$aRecord['email'], $aRecord['name'], $aRecord['surname']]);
}
在此处查看http://php.net/manual/en/function.fputcsv.php#refsect1-function.fputcsv-parameters second parameter should be an array
你错过了什么
fputcsv
的第二个参数应该是 array
,但在您的代码示例中它是 string
.
fputcsv的第二个参数是数组
你可以这样做:
$fields = [];
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
$fields[] = $aRecord['email'];
$fields[] = $aRecord['name'];
$fields[] = $aRecord['surname'];
fputcsv($fh, $fields);
}
我试图生成一个 .csv 文件,但我得到的这个文件是空的。 所以我的代码是:
$fileName = 'Users_' . date('d-m-Y') . '.csv';
$fh = fopen($fileName, "w");
fputcsv($fh, array('EMAIL', 'NAME','SURNAME'), ";");
foreach ($aDataBases as $database) {
$sSql = sprintf('SELECT email, name, surname FROM users');
$rResult = Mysqli::query($sSql, $database);
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
fputcsv($fh, $aRecord['email'], ";");
fputcsv($fh, $aRecord['name'], ";");
fputcsv($fh, $aRecord['surname'], ";",'"');
}
}
fclose($fh);
文件已生成但为空,您能帮帮我吗?我做了一个 print_r() 并且在查询执行后有数据。我做错了什么?
您必须将此行更改为
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
fputcsv($fh, $aRecord['email'], ";");
fputcsv($fh, $aRecord['name'], ";");
fputcsv($fh, $aRecord['surname'], ";",'"');
}
到
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
fputcsv($fh, [$aRecord['email'], $aRecord['name'], $aRecord['surname']]);
}
在此处查看http://php.net/manual/en/function.fputcsv.php#refsect1-function.fputcsv-parameters second parameter should be an array
你错过了什么
fputcsv
的第二个参数应该是 array
,但在您的代码示例中它是 string
.
fputcsv的第二个参数是数组
你可以这样做:
$fields = [];
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC)){
$fields[] = $aRecord['email'];
$fields[] = $aRecord['name'];
$fields[] = $aRecord['surname'];
fputcsv($fh, $fields);
}