Heim > Fragen und Antworten > Hauptteil
Ich brauche eine Möglichkeit, eine MYSQL-Datenbank über PHP in CSV zu exportieren, aber ich muss auch die Spaltennamen auswählen. Bisher habe ich Folgendes, das alles tut, was ich brauche, außer die Spaltennamen abzurufen.
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);
Ich bin mir nicht sicher, wie ich das erreichen werde. Ich muss nicht nur die Spaltennamen abrufen, sondern auch die Spaltennamen und die in jeder Spalte enthaltenen Daten. In den anderen vorgeschlagenen Fragen habe ich keine relevanten Informationen gefunden.
P粉9498488492023-11-05 20:48:37
一旦从mysqli_query()
方法设置了$result
,您就可以使用mysqli_fetch_fields()
返回结果集中各列的描述数组。
该数组的每个元素都是一个具有多个属性的对象。其中一个属性是name
——您可以将其用作 csv 文件的标题。您还可以获得 max_length
、length
和 table
等属性。 链接文档显示了使用此元数据的示例。 p>
如果您的查询比SELECT * FROM table
更复杂,则此元数据特别有用:如果您为查询中的列分配别名,它们会显示在名称
中code> 元数据数组元素的属性。
即使结果集中没有行,这也有效。
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); // .. }