Insert wird nicht ausgeführt nach voriger Abfrage

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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"
    ;}

    -------------
    Last edited by schabicks; 05-02-2006, 11: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 |


    Comment


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

      Comment


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

        Comment


        • #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

          Comment


          • #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

            Comment


            • #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

              Comment


              • #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

                Comment


                • #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 ..."
                  }

                  Comment


                  • #10
                    DANKE!!!

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

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

                    Comment

                    Working...
                    X