Ankündigung

Einklappen
Keine Ankündigung bisher.

sql verbindung - while schleife blockiert

Einklappen

Neue Werbung 2019

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

  • sql verbindung - while schleife blockiert

    Hallo Zusammen ,

    habe ein grosses problem mit einem script.
    warum komme ich nicht in die while schlefe rein?

    das script functioniert bis und mit zum if($result)
    danach gehts nicht weiter. habe mit echo ausgaben getestet wo das es nicht weiterläuft. was ist an dieser while schleife falsch?


    PHP-Code:
        include('include/database.php');
        
    $connection mysql_connect($db['host'],$db['uid'],$db['pwd']);
        if(
    $connection)
        {   echo 
    $name;echo $vorname;
                
    mysql_select_db($db['db']);
                
    $sql 'SELECT s_nachname, s_vorname, s_tel
                        FROM schueler'
    ;
                
    $result mysql_query($sql);
                if(
    $result)
                {
                    while (
    $row mysql_fetch_assoc($result)) 
                    {
                        
    //Prüfe ob die Personalien schon vorhanden sind
                        
    if ($row['s_nachname']==$name && $row['s_vorname']==$vorname && $row['s_tel']==$tel)
                        {
    $eintraege=1;}else{$eintraege=0;}
                        echo 
    $eintraege;
                    }
            } 


  • #2
    Dann füg mal bitte überall Error Reporting ein.
    D.h. bei mysql Funktionen mysql_error und ansonsten setz oben ins Script error_reporting(-1);

    Kommentar


    • #3
      <?php
      error_reporting(-1);
      restliches script...
      dies hat keine fehlerausgabe mit sich gebracht. das script läuft, jedoch ohne die daten in die DB zu schreiben

      Kommentar


      • #4
        Der Quellcode da oben liest doch nur aus der DB und schreibt doch nichts, oder übersehe ich da was?

        Ansonsten probier mal so:
        PHP-Code:
        include('include/database.php');

        $connection mysql_connect($db['host'],$db['uid'],$db['pwd']);

        if (!
        $connection) {
            echo 
        mysql_error();
            exit;
        }

        if (!
        mysql_select_db($db['db'])) {
            echo 
        mysql_error();
            exit;
        }

        $sql 'SELECT s_nachname, s_vorname, s_tel FROM schueler';
        $result mysql_query($sql);

        if (!
        $result) {
            echo 
        mysql_error();
            exit;
        }

        if (
        mysql_num_rows($result) == 0) {
            echo 
        "Keine Zeilen gefunden";
            exit;
        }

        while (
        $row mysql_fetch_assoc($result)) {
            if (
        $row['s_nachname'] == $name && $row['s_vorname'] == $vorname && $row['s_tel'] == $tel)
            {
               echo 
        1;
            }
            else
            {
                echo 
        0;
            }
        }

        mysql_free_result($result); 
        Folgende Abfrage verstehe ich noch nicht ganz.
        PHP-Code:
        if ($row['s_nachname'] == $name && $row['s_vorname'] == $vorname && $row['s_tel'] == $tel
        Solltest du nur einen bestimmten Eintrag aus der DB suchen, dann solltest du deine SQL-Abrage ändern.

        Kommentar


        • #5
          Auweia, was für ein grausames Script! Mal angenommen, du hast 1000 Einträge in der Tabelle und du suchst ausgerechnet den letzten Eintrag, dann rennt deine Schleife 1000 Einträge durch, nur um herauszufinden, ob es einen Treffer gibt.

          PHP-Code:
          <?php
            $sql 
          "SELECT 
                      `s_nachname`, 
                      `s_vorname`, 
                      `s_tel`
                    FROM 
                      `schueler`
                    where
                     `s_nachname`='
          $name'
                    AND
                     `s_vorname`='
          $vorname'";
                     
             
          $result mysql_query($sql)
               or die (
          "MySQL-Error: " mysql_error());
               
             echo 
          mysql_num_row($result);
          ?>
          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

          Kommentar


          • #6
            hmm der scriptteil muss nur prüfen ob es einen eintrag gibt und dann die variable korrekt füllen, was jedoch nicht passiert, da ich nicht in die while schleife gelange

            Kommentar


            • #7
              Zitat von andy78 Beitrag anzeigen
              da ich nicht in die while schleife gelange
              Deine while-Schleife ist Blödsinn und unnötig!
              Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

              Kommentar


              • #8
                Und steigt mal von der mysql_* Extension auf PDO bzw. mysqli um. Die mysql_ Extension wurde ab PHP 5.5 als deprecated markiert und wird ab der nächsten PHP Version verschwinden.

                Mit PDO kannste dann z.B. gleich via fetchAll() alle Datensätze laden und du kannst dir das mit dem while sparen.
                https://github.com/Ma27
                Javascript Logic is funny:
                [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                Kommentar


                • #9
                  Uha hat recht.
                  Wenn du nur prüfen willst ob der Eintrag vorhanden ist, ist der Code von uha der richtige Weg.

                  Kommentar


                  • #10
                    ok ich werd das umschreiben.. danke

                    Kommentar


                    • #11
                      Zitat von Ma27 Beitrag anzeigen
                      Mit PDO kannste dann z.B. gleich via fetchAll() alle Datensätze laden und du kannst dir das mit dem while sparen.
                      Es geht doch nicht darum, alle Datensätze zu laden, sondern es soll herausgefunden werden, ob es einen entsprechenden Datensatz gibt.
                      Und dafür braucht man keine Schleife!
                      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                      Kommentar

                      Lädt...
                      X