将MYSQL fectched行导出到php中的csv

时间:2014-11-17 10:06:56

标签: php mysql csv

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

    {
    }  
}            

1 个答案:

答案 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);