Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Führen Sie 2 SQL-Abfragen mit 1 Abfrage aus, um das Abfrageergebnis im CSV-Format zu speichern

Sie möchten nicht, dass es als eine Abfrage ausgeführt wird. Es ist in der Regel besser, viele kleine einfache Abfragen statt einer komplizierten Abfrage zu haben. Tatsächlich würde ich vorschlagen, dass Sie Ihren Code aktualisieren, um noch mehr Abfragen zu haben, zum Beispiel sollte der Inhalt von "notexists()" nicht als Unterabfrage ausgeführt werden, es sollte eine vollständig separate Abfrage sein, um die Leistung zu verbessern.

Es gibt zwei Teile, zuerst müssen Sie die richtigen HTTP-Header senden, um einen CSV-Download auszulösen:

header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );

Dann einfach die Daten im CSV-Format ausdrucken:

while ($row = mysql_fetch_array($myQuery)) {
  $first = true;
  foreach ($row as $cell) {
    if ($first)
      $first = false;
    else
      print ',';

    print '"' . addslashes($cell) . '"';
  }
  print "\n";
}

Hinweis:CSV ist ein schlechtes Format und funktioniert nur in einigen Editionen von Microsoft Excel. Je nach Wohnort des Benutzers (z. B. Europa) funktioniert es möglicherweise nicht richtig. Für die meisten Editionen von Excel funktioniert das obige jedoch. Es gibt keine gute Lösung, außer die Verwendung von CSV zu vermeiden.