CSV-файл из MySQL с использованием PHP с помощью apopach (mysqli-> connect и т. Д.)

Я пытаюсь создать файл csv непосредственно из таблицы mysql, используя php с подходом OOP. Вот мой код:

$mysqli = new mysqli($host, $user, $pass, $database); // Checking connection. if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } $query = 'SELECT * FROM table'; $result = $mysqli->query($query); while ($row = $result->fetch_array()) { $rows[] = $row; } $array = ""; foreach($rows as $row) { $array .= "\"".$row["genus"].",".$row["species"]."\","; } $list = array($array); header('Content-type: application/ms-excel'); header('Content-Disposition: attachment; filename=export.csv'); $file = fopen("php://output","w"); foreach ($list as $line) { fputcsv($file,explode(',',$line)); } fclose($file); // Free result set. $result->close(); // Close connection. $mysqli->close(); 

Моя проблема связана со следующей частью при создании массива:

  $array = ""; foreach($rows as $row) { $array .= "\"".$row["genus"].",".$row["species"]."\","; } 

потому что когда я делаю print_r ($ list); Я не получаю ожидаемый массив: Array ([0] => "homo, sapiens", [1] => "homo, erectus", [2] => "homo, ergaster",)

но этот: Массив ([0] => "homo, sapiens", "homo, erectus", "homo, ergaster",)

и, кроме того, когда я создаю массив вручную

 $list = array("homo,sapiens","homo,erectus","homo,ergaster"); 

он работает нормально, и я получаю правильный файл csv.

Я был бы признателен, если бы кто-нибудь мог мне помочь, объясните мне, что я делаю неправильно, и что я должен сделать, чтобы исправить код.

Это потому, что вы обрабатываете $array как строку, а не массив. Это должно работать:

 $array = array(); foreach($rows as $row) { $array[] = "\"".$row["genus"].",".$row["species"]."\","; } 

Я думаю, вы ожидаете $list = array($array); чтобы магически преобразовать строку, разделенную запятой, в отдельные элементы массива, но это не так.