Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] CSV Export bricht ab

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] CSV Export bricht ab

    Hallo,

    ich möchte Adressdaten in eine CSV exportieren. Dazu gibt es ein Suchformular über dem man nach den gewünschten Adressen filtern kann. Vor jeder Adresse habe ich eine Checkbox gemacht wo man anhaken kann welche Adressen exportiert werden können. Die Schlüssel-IDs der angehakten Datensätze werden in ein Array ($export) gepackt und per POST an die nächste Seite gesendet. Dort liegt folgender Code:

    $out = fopen('./dateien/temp_2.csv', 'w');

    for($i=0; $i < count($export); $i++)
    {
    $ergebnis = mysql_query("SELECT * FROM produkte WHERE id =$ausstattung[$i] ");
    $row = mysql_fetch_object($ergebnis);

    fputcsv($out, array($row->name.';'.$row->strasse.';'.$row->ort.';'.$row->tel));

    }
    fclose($out);

    Hake ich auf der ersten Seite nur wenige Datensätze an funktioniert alles wunderbar. Markiere ich aber mehr als 50 Datensätze bricht das Skript auf der nächsten Seite an der Stelle einfach ab. Manchmal zeigt der Server auch einfach den Quelltext an.

    Kann mir jemand einen Tip geben? Danke.

  • #2
    Die älteste der drei mysql-Erweiterungen ist veraltet (mysql_*-Funktionen, nicht die MySQL-Datenbank) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
    Choosing an API
    Warum man mysql* generell nicht (mehr) nutzen sollte.
    Wie man von mysql* auf PDO umsteigt
    Wissenswertes zum Thema SQL-Injection


    Bitte PHP-Tags benutzen:

    Kommentar


    • #3
      PHP-Code:
      for($i=0$i count($export); $i++)
      {
      $ergebnis mysql_query("SELECT * FROM produkte WHERE id =$ausstattung[$i] ");
      $row mysql_fetch_object($ergebnis);

      fputcsv($out, array($row->name.';'.$row->strasse.';'.$row->ort.';'.$row->tel));

      }
      fclose($out); 
      Nicht so! Ganz böse, du führst SQL in Schleifen aus und gibst zudem die Resourcen nicht wieder frei... dir läuft bei größeren Datenmengen der Speicher voll.

      Datenbanken werden so herum abgefragt:
      PHP-Code:
      $ergebnis mysql_query("SELECT name, strasse, ort, tel FROM produkte WHERE id IN(...)");
      while(
      $row mysql_fetch_object($ergebnis)) {
          
      fputcsv($out$row);

      Fortgeschritten
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Hallo rkr,

        Danke für die Links. Werde schnell umstellen.

        Hallo lstegelitz,

        vielen Dank. Hat mir sehr geholfen. Habe auf Anfänger umgestellt ist mir nicht aufgefallen.

        Kommentar

        Lädt...
        X