Mysql
 sql >> Database >  >> RDS >> Mysql

Esegui 2 query sql con 1 query per salvare il risultato della query in formato .csv

Non vuoi che venga eseguito come una query. Di solito è meglio avere molte piccole query semplici invece di una query complicata. In effetti ti suggerirei di aggiornare il tuo codice per avere ancora più query, ad esempio il contenuto di "non esiste()" non dovrebbe essere eseguito come una sottoquery, dovrebbe essere una query completamente separata per migliorare le prestazioni.

Ci sono due parti, prima devi inviare le intestazioni HTTP corrette per attivare un download CSV:

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

Quindi stampa i dati in formato CSV:

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

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

Nota:CSV è un formato errato e funzionerà solo in alcune edizioni di Microsoft Excel. A seconda di dove vive l'utente (es:Europa) potrebbe non funzionare correttamente. Per la maggior parte delle edizioni di Excel, quanto sopra funzionerà comunque. Non esiste una buona soluzione se non quella di evitare di utilizzare CSV.