sql >> Database >  >> RDS >> Mysql

Voer 2 sql-query's uit met 1 query om het queryresultaat op te slaan als .csv-indeling

U wilt niet dat het als één query wordt uitgevoerd. Het is meestal beter om veel kleine eenvoudige zoekopdrachten te hebben in plaats van één ingewikkelde zoekopdracht. Ik zou zelfs willen voorstellen dat je je code bijwerkt om nog meer zoekopdrachten te hebben, bijvoorbeeld de inhoud van de "niet bestaat()" zou niet als een subquery moeten worden gedaan, het zou een volledig afzonderlijke zoekopdracht moeten zijn om de prestaties te verbeteren.

Er zijn twee delen, eerst moet u de juiste HTTP-headers verzenden om een ​​CSV-download te activeren:

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

Print vervolgens de gegevens in CSV-formaat:

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

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

Opmerking:CSV is een slecht formaat en dit werkt alleen in sommige edities van Microsoft Excel. Afhankelijk van waar de gebruiker woont (bijvoorbeeld:Europa) werkt het mogelijk niet goed. Voor de meeste edities van Excel zal het bovenstaande echter werken. Er is geen goede oplossing, behalve om het gebruik van CSV te vermijden.




  1. schrijf een query die van toepassing is op een hele db in plaats van een tabel

  2. inloggen blokkeren na X mislukte pogingen

  3. Afkapdatumveld in mysql zoals Oracle

  4. zoek gegevens van html-invoer in mysql