Insert wird nicht ausgeführt nach voriger Abfrage

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

  • Insert wird nicht ausgeführt nach voriger Abfrage

    Hallo Leute,

    mein Skript steht unten in Auszügen, damit habe ich folgendes Problem:
    Nachdem ich über SELECT.... eine Abfrage aller Usernamen gemacht habe, die existieren wird mit der for-Schleife für alle Datensätze aus dem Array verglichen, ob der eingegebene Username sich von denen aus der DB unterscheidet oder nicht. Funktioniert auch.

    Bloß wenn der Username nicht existiert, also der User angelegt werden soll, wird die Abfrage nicht ausgeführt und kein Datensatz wie eigentlich gewollt eingefügt. Wo ist hier der Fehler? Danke

    ------------
    PHP-Code:
    //Verbindung zur Datenbank

    $sql "SELECT UserName FROM $tabellenname WHERE 
    UserName='"
    .mysql_real_escape_string($username)."'";


    $result mysql_query($sql$con);

    for(
    $i=0$i<@mysql_num_rows($result); $i++)
    {
    $ergebnis[$i] = mysql_fetch_array($result);
    }

    for(
    $i=0$i<count($ergebnis); $i++)
    {

    //Die nachfolgende if-Bedingung wird nicht ausgeführt, 
    Fehlermeldung erscheint nichtes wird nur kein INSERT ausgeführt.

    if(
    $_POST['username']!=$ergebnis[$i]['UserName'])
    {
    $sql "INSERT INTO $tabellenname (UserName, UserPass,
     UserMail) values ('"
    .mysql_real_escape_string($username
    $con)."','".mysql_real_escape_string($passwort
    $con)."','".mysql_real_escape_string($email$con)."')";

    mysql_query($sql$con);
    echo 
    "Deine Daten wurden erfolgreich eingetragen!";
    }
    else
    {echo 
    "Dieser Username existiert bereits! Bitte suchen Sie sich 
    einen anderen Usernamen aus"
    ;}

    -------------
    Zuletzt geändert von schabicks; 05.02.2006, 12:21.
    ------------
    man wächst mit seinen aufgaben

  • #2
    http://www.php-resource.de/forum/sho...threadid=50454
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      jetzt besser
      ------------
      man wächst mit seinen aufgaben

      Kommentar


      • #4
        PHP-Code:
        mysql_real_escape_string($email$con
        mfg - sagg

        Kommentar


        • #5
          Original geschrieben von sagg
          PHP-Code:
          mysql_real_escape_string($email$con
          Sorry, ich sehe dort keinen Fehler. Wo soll er denn sein?
          ------------
          man wächst mit seinen aufgaben

          Kommentar


          • #6
            Hey, ich habe das durchgeschaut, aber fakt ist:

            Wenn ich in nach dem If auch ein echo setze mit "Hallo WELT" wird das nicht angezeigt, das else aber schon....
            ------------
            man wächst mit seinen aufgaben

            Kommentar


            • #7
              Argh, mein Fehler, hab mich vorhin irgendwie verlesen.


              Aber mal was anderes, gibt es bei dir mehrere user mit dem selben Namen?

              Weil ich das
              PHP-Code:
              for($i=0$i<@mysql_num_rows($result); $i++)
              {
              $ergebnis[$i] = mysql_fetch_array($result);

              nicht wirklich nachvollziehen kann.

              Wenn es nur einen User mit dem Name gibt, wovon ich mal ausgehe, ist das doch vollkommen überflüssig?
              mfg - sagg

              Kommentar


              • #8
                Ja, irgendwie schon. Aber ich muss doch alle Datensätze durchgehen von 1 bis X und schauen, ob der String von $_POST['username'] mit einem aus der DB übereinstimmt. Dazu die Schleife, weil das ohne diese Schleife nämlich nicht richtig funktioniert!

                Kann es daran liegen, dass keine verschachtelten Abfragen gemacht werden sollten?
                ------------
                man wächst mit seinen aufgaben

                Kommentar


                • #9
                  Original geschrieben von schabicks
                  Ja, irgendwie schon. Aber ich muss doch alle Datensätze durchgehen von 1 bis X und schauen, ob der String von $_POST['username'] mit einem aus der DB übereinstimmt. Dazu die Schleife, weil das ohne diese Schleife nämlich nicht richtig funktioniert!
                  Dafür wurde das WHERE erfunden und du benutzt es ja auch. Also wenn bei dir ein Username nur einmal vergeben werden kann (und alles andere wäre Schwachsinn!), dann wirst du mit "WHERE UserName = ..." immer nur einen Datensatz zurück bekommen.

                  Kannst also deinen ganzen Schleifenkram wegschmeißen und stattdessen diesen Pseudocode umsetzen:

                  "SELECT ... WHERE UserName = ..."
                  if (mysql_num_rows($result) == 0) {
                  "INSERT ..."
                  }

                  Kommentar


                  • #10
                    DANKE!!!

                    Also in Zukunft immer versuchen direkt mit my_sql-Argumenten zu arbeiten bei ähnlichen Problemen???

                    ------------
                    man wächst mit seinen aufgaben

                    Kommentar

                    Lädt...
                    X