簡體   English   中英

使用PHP獲取CSV導出(MYSQL)的列名和數據

[英]Use PHP to get Column Names and Data for CSV export (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);

我不確定如何實現這一目標。 我不僅需要獲取列名,還需要獲取列名以及每個列中包含的數據。 在另一個建議的問題中,我沒有找到任何關於此的信息。

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

通過mysqli_query()方法設置$result ,可以使用mysqli_fetch_fields()返回結果集中各列的描述數組。

該數組的每個元素都是一個具有多個屬性的對象。 一個屬性是name -您可以將其用作csv文件的標題。 您還將獲得諸如max_lengthlengthtable類的屬性。 鏈接的文檔顯示了使用此元數據的示例。

如果查詢的內容比SELECT * FROM table更復雜,則此元數據特別有用:如果您為查詢中的列分配別名,則別名將顯示在元數據數組元素的name屬性中。

即使結果集中沒有行,此方法也有效。

聽起來很簡單,只要其他一切都已經為您服務。 您可以在while循環之前使用列名稱和fputcsv($fp, $array_of_column_names)創建一個數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM