使用PHP获取CSV导出的列名和数据(MYSQL)

时间:2016-04-20 21:21:40

标签: php mysql database csv

我需要一种通过PHP将我的MYSQL数据库导出为CSV的方法,但我也需要选择列名。到目前为止,除了获取列名之外,我还有以下内容可以完成所需的一切。

echo "Export Starting \n";
$SQL = ("SELECT *
FROM INF_TimeEntries
WHERE Exported IS NULL");
$result = mysqli_query($db_conn, $SQL) or die("Selection Error " . mysqli_error($db_conn));
echo "Export Data Selected \n";
$fp = fopen('../updateDatabase/timesheetExport/TimeEntries.csv', 'w');
echo "Starting Write to CSV \n";
while($row = mysqli_fetch_assoc($result)){
    fputcsv($fp, $row);
    $RowID = $row['ID'];
    $exportTime = date("Y-m-d H:i:s");
    $sql = ("UPDATE INF_TimeEntries
                    SET Exported = '$exportTime'
                    WHERE ID = '$RowID'");
    if ($mysqli_app->query($sql) === TRUE) {
    }
    else {
        echo date("Y-m-d H:i:s")."\n";
        echo "An Error Occured please contact the administrator ". $mysqli_app->error."\n";
    }
}
echo "Export Completed \n";
fclose($fp);
mysqli_close($mysqli_app);
mysqli_close($db_conn);

我不确定如何实现这一目标。我不仅需要获取列名,还需要列名和每个列中包含的数据。我在其他建议的问题中没有找到任何相关信息。

2 个答案:

答案 0 :(得分:2)

由于您正在使用mysqli_fetch_assoc,因此列的名称是每次迭代中$row数组的键。您可以在第一次迭代中将其放在文件中:

echo "Starting Write to CSV \n";
$first = true;
while($row = mysqli_fetch_assoc($result)){
    if ($first) {
        fputcsv($fp, array_keys($row));
        $first = false;
    }
    fputcsv($fp, $row);
    // ..
}

答案 1 :(得分:1)

听起来很简单,只要其他一切都已经为你效劳。您可以使用列名创建一个数组,并在while循环之前创建fputcsv($fp, $array_of_column_names)