【问题标题】:exporting MYSQL fectched row into csv in php在php中将MYSQL fectched行导出到csv
【发布时间】:2014-11-17 10:06:56
【问题描述】:

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


【解决方案1】:

您不一定需要“高级 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    相关资源
    最近更新 更多