[英]PHP EXPORT MYSQL TO CSV - got column headers, can't get rest of data?
[英]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_length
, length
和table
類的屬性。 鏈接的文檔顯示了使用此元數據的示例。
如果查詢的內容比SELECT * FROM table
更復雜,則此元數據特別有用:如果您為查詢中的列分配別名,則別名將顯示在元數據數組元素的name
屬性中。
即使結果集中沒有行,此方法也有效。
聽起來很簡單,只要其他一切都已經為您服務。 您可以在while循環之前使用列名稱和fputcsv($fp, $array_of_column_names)
創建一個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.