SQL-Abfrage

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

  • SQL-Abfrage

    Hi Leute !

    Ich möchte in einer MySQL-Datenbank bestimmte Datensätze selektieren und in eine
    Textdatei schreiben. Sobald das Abfrageergebnis eine bestimmte Grösse erreicht funktioniert das nicht mehr.
    Ich hebe mir zum Test einen echo-Befehl eingebaut. Dieser erscheint ab ungefähr
    1500 Datensätzen nicht mehr .
    So wie ich den Code gepostet habe geht es nicht mehr :
    Abfrageergebnis 2800 Sätze .
    Am Bildschirm steht dann nur
    Treffer = 2800


    Code:
    include("../../inishop.php4");
    $osconnect=mysql_connect($dbhost, $dbuser, $dbpwd);
    $query = "SELECT * from IDStable where warengruppenr = '085' OR warengruppenr = '086' OR warengruppenr = '087'
              OR warengruppenr = '088' OR warengruppenr = '089' OR warengruppenr = '090' OR warengruppenr = '091' OR warengruppenr = '095'";
    $result=mysql_db_query($dbname, $query);
    $treffer=mysql_num_rows($result);
    echo "treffer = ".$treffer;
    while ($transferarray[] = mysql_fetch_array($result)) {}
    echo "test";
    $fd = fopen("IDStable.txt", "a+");
    for($i=0;$i<=1000;$i++)
    {
        
        $inhalt =      $transferarray[$i][breite].";".$transferarray[$i][zoll].";".$transferarray[$i][querschnitt].";".
                       $transferarray[$i][geschwindex].";".$transferarray[$i][matchcode].";".$transferarray[$i][bezeichnung].";".$transferarray[$i][profil].";".
                       $transferarray[$i][fahrzeug].";".$transferarray[$i][saison].";".$transferarray[$i][hersteller].";".$transferarray[$i][preis1].
                       $transferarray[$i][preis4].$transferarray[$i][verfuegbarkeit].";".$transferarray[$i][bestand].";".$transferarray[$i][warengruppenr].
                       $transferarray[$i][herstellernr].";".$transferarray[$i][bildnr].";".$transferarray[$i][BestandKnz].";".$transferarray[$i][bezeichnung1].
                       "\n";
        fwrite($fd, $inhalt);
        $inhalt = "";
    }
    echo "1";
    Vielleicht hat jemand ne Idee !

    Gruss Jogi

  • #2
    probier mal immer nur 1500 datensätze auszulesen (beispielwert) und dann das skript erneut aufzurufen um die zweiten 1500 auszulesen und dann die dritten 1500 und die vierten und ...

    kommt denn irgendne fehlermeldung?

    was für daten liest du denn aus?
    INT, varchar, blob?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Ich nehme an das Script bricht wegen speichermangel ab.
      Weil das Array zu gross wird wo du die Ergebnisse, der query reinschreibst. Ein Blick in die php_error.log datei hilft da.
      Oder mal
      PHP-Code:
        error_reporting(E_ALL); 
      einschalten.

      mfg

      rth
      H I L F E
      GD FreeType Antialising
      Gesuch PHP Entwicklungsumgebung
      ------------------------------------------
      Der Cmabrigde rael tset, sruf whoin du wlilst

      Kommentar


      • #4
        @Hapiness

        Es kommt keine Fehlermeldung ;
        Am Bildschirm steht Treffer : 2800 ;
        Fertig, Das Skript macht dann nichts mehr.

        Ich lese Datensätze mit 15 Feldern (verschiedene Datentypen)
        Es sind aber nur int und char und Boolean


        @RobertTheHero

        Wenn ich error_reporting(E_ALL); einschalte kommt trotzdem keine
        Fehlermeldung !

        Wo finde ich die php_error.log .

        @all
        Das Ganze läuft auf einen Internet-Account bei Schlund + Partner

        Kommentar


        • #5
          wenn du auch bei error_reporting(E_ALL) keine fehlermeldung bekommst, dein skript aber anscheinend abgestürtzt ist, ist das komisch

          du könntest mal probieren, nich erst alles in ein array zu laden und das array dann durchzugehen, sondern gleich in der while-schleife, die die daten per mysql_fetch_assoc holt in die datei zu schreiben
          PHP-Code:
          $fd fopen("IDStable.txt""a+");
          $i=0//dummy
          while ($transfer mysql_fetch_array($result))
          {
            
          $inhalt =    $transfer['breite'].";".$transfer['zoll'].";...;"$transfer['bezeichnung1']."\n";
            
          fwrite($fd$inhalt);
            echo 
          'Datensatz: '.($i++).'<br />'//dummy
          }
          fclose($fd); 
          oder du machst es einfach häppchenweise
          OffTopic:
          bitte mit 2 p
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Sorry mrHappiness !


            Mit deinem letzten Vorschlag klappt es wunderbar !!!

            Vielen Dank

            Kommentar

            Lädt...
            X