以下是我的php程序的一部分,它是从输入ID中读取mysql表中的行。但是我希望将结果直接发送给' .csv'文件。我知道php内置了功能,但我无法有效地包含它。那么有人可以使用高级PHP函数给出导出到csv的方向吗?
$file = fopen("fetched.csv","w");
for($i=0;$i<=$len;$i++)
{
$lo = $locus[$i];
mysqli_select_db($conn,"microarray");
$query = mysqli_query("SELECT * FROM anatomy WHERE locus_id = "$lo"");
while ($row = mysqli_fetch_row($query))
{
}
}
答案 0 :(得分:0)
您不一定需要先进的PHP功能&#34;。 csv文件只是逗号分隔列的序列。试试这个。
function addRowToCsv(& $csvString, $cols) {
$csvString = implode(',', $cols) . PHP_EOL;
}
$csvString = '';
$first = true;
while ($row = mysqli_fetch_assoc($query)) {
if ($first === true) {
$first = false;
addRowToCsv($csvString, array_keys($row));
}
addRowToCsv($csvString, $row);
}
header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyCsvFile.csv');
echo $csvString;
请注意,addRowToCsv的第一个参数是通过引用传递的。这不是必需的,您可以轻松使用返回值,但这就是我要做的。
- 编辑 - 我刚刚注意到你将输出保存到文件而不是作为下载服务。如果这是您想要做的,那么使用上面但替换
header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyCsvFile.csv');
echo $csvString;
使用..
file_put_contents('MyCsvFile.csv', $csvString);