我需要一種透過(guò) PHP 將 MYSQL 資料庫(kù)匯出到 CSV 的方法,但我還需要選擇列名稱。到目前為止,我有以下內(nèi)容,除了獲取列名稱之外,它可以完成我需要的一切。
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);
我不確定我將如何實(shí)現(xiàn)這一目標(biāo)。我不僅需要取得列名稱,還需要取得列名稱和每列中包含的資料。我在建議的其他問(wèn)題中沒(méi)有找到任何相關(guān)資訊。
一旦從mysqli_query()
方法設(shè)定了$result
,您就可以使用mysqli_fetch_fields()
# 傳回結(jié)果集中各列的描述數(shù)組。
該陣列的每個(gè)元素都是一個(gè)具有多個(gè)屬性的物件。其中一個(gè)屬性是name
——您可以將其用作 csv 檔案的標(biāo)題。您還可以獲得 max_length
、length
和 table
等屬性。 連結(jié)文件顯示了使用此元資料的範(fàn)例。 p>
如果您的查詢比SELECT * FROM table
更複雜,則此元資料特別有用:如果您為查詢中的資料列指派別名,它們會(huì)顯示在名稱
中code> 元資料數(shù)組元素的屬性。
即使結(jié)果集中沒(méi)有行,這也有效。
由於您使用的是 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); // .. }