sql >> Databasteknik >  >> RDS >> Mysql

Kör 2 sql-fråga med 1 fråga för att spara frågeresultatet i .csv-format

Du vill inte att det ska köras som en fråga. Det är vanligtvis bättre att ha många små enkla frågor istället för en komplicerad fråga. Jag skulle faktiskt föreslå att du uppdaterar din kod så att den har ännu fler frågor, till exempel bör innehållet i "not exists()" inte göras som en underfråga, det borde vara en helt separat fråga för att förbättra prestandan.

Det finns två delar, först måste du skicka rätt HTTP-rubriker för att utlösa en CSV-nedladdning:

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

Sedan är det bara att skriva ut data i CSV-format:

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

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

Obs:CSV är ett dåligt format, och detta fungerar bara i vissa utgåvor av Microsoft Excel. Beroende på var användaren bor (t.ex. Europa) kanske det inte fungerar korrekt. För de flesta utgåvor av Excel fungerar dock ovanstående. Det finns ingen bra lösning förutom att undvika att använda CSV.




  1. Bästa sättet att testa om en rad finns i en MySQL-tabell

  2. Wildfly 10 kan inte ladda MySQL XA-drivrutinen vid start

  3. Hur man hämtar radantalet för alla tabeller i en SQL SERVER-databas

  4. mysql efter insert trigger som uppdaterar en annan tabells kolumn