在PHP中将MYSQL影响行导出为csv


exporting MYSQL fectched row into csv in php

以下是我的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))
    {
    }  
}            

你不一定需要"高级php函数"。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);