首頁  >  問答  >  主體

使用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粉579008412323 天前664

全部回覆(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
  • 取消回覆