首页  >  问答  >  正文

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

我需要一种通过 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);

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

P粉579008412P粉579008412373 天前730

全部回复(2)我来回复

  • P粉949848849

    P粉9498488492023-11-05 20:48:37

    一旦从mysqli_query()方法设置了$result,您就可以使用mysqli_fetch_fields() 返回结果集中各列的描述数组。

    该数组的每个元素都是一个具有多个属性的对象。其中一个属性是name——您可以将其用作 csv 文件的标题。您还可以获得 max_lengthlengthtable 等属性。 链接文档显示了使用此元数据的示例。

    如果您的查询比SELECT * FROM table更复杂,则此元数据特别有用:如果您为查询中的列分配别名,它们会显示在名称中code> 元数据数组元素的属性。

    即使结果集中没有行,这也有效。

    回复
    0
  • P粉002023326

    P粉0020233262023-11-05 09:24:13

    由于您使用的是 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);
        // ..
    }

    回复
    0
  • 取消回复