Problem mit Datenbank?!...

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

  • Problem mit Datenbank?!...

    Hallo!
    Ich hab da nen Problem mit PHP und MySQL...
    Es handelt sich um ein Script was es ermöglicht, Benutzername und Passwort in die Datenbank einzutragen, also sone registrierung...

    Mein Problem ist die Abfrage, ob ein Benutzername schon vorhanden ist oder nicht...

    Quelltext:

    $aendern = "SELECT_COUNT(username) FROM Benutzerdaten WHERE Username = '$username'";
    $update = mysql_query($aendern);
    if($update == 0) { $insert="INSERT Benutzerdaten Set Username = '$username', Passwort = '$password'"; }
    else { die ("Der Name existiert bereits!"); }
    $end = mysql_query($insert);

    Eigentlich sollte er doch nun abbrechen, wenn er den entsprechenden Namen findet?! Das tut er jedoch nicht, sondern schreibt zweimal den gleichen Namen in die Datenbank! Wo liegt der Fehler?
    Kann mir jemand helfen?

    Gruß
    Pd

  • #2
    Dein Weg is ja auch völlig Falsch in $update steht jedenfalls nicht das Ergebnis des counts sondern eine resource ID
    Du musst erst mal das Ergebnis fetchen und dann vergleichen.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Danke...

      Hmm, danke für den Hinweis...
      Das Problem ist nur, das ich noch ein Newbie in PHP/MySQL bin...
      Wie muss denn der Code dann lauten?...

      Kommentar


      • #4
        schau mal hier: www.php.net/manual/de/function.mysql-query.php
        hilft dir das weiter?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Danke für Eure Antworten
          Hab mir die Seite mal angesehen,...Ist zwar für mich einigermaßen nachzuvollziehen, aber trotzdem weiß ich nicht, wie ich meinen Code nun ändern muss....hmm...

          Kommentar


          • #6
            geht speziell um diesen teil:
            Nur bei SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine neue Ergebnis-Kennung, die Sie an die Funktion mysql_fetch_array() und andere Funktionen, die mit Ergebnistabellen umgehen können, übergeben können.
            schon mal bei mysql_fetch_array im manual geschaut?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              mysql_fetch_array() ist eine erweiterte Version von mysql_fetch_row(). Die Daten werden sowohl unter numerischen Indizes des Ergebnis-Arrays abgelegt, als auch unter assoziativen Indizes. Als Schlüssel für die assoziativen Indizes werden die Feldnamen benutzt.

              Falls zwei oder mehrere Spalten des Ergebnisses den gleichen Feldnamen haben, dann wird nur der Wert der letzten Spalte im Array unter diesem Feldnamen abgelegt. Um auch auf die anderen gleichnamigen Spalten zugreifen zu können, müssen Sie den numerischen Index der Spalte verwenden oder einen Alias für die Spalte vergeben. Falls Sie Aliase für Spalten verwenden, können Sie auf die Inhalte dieser Spalten nicht über ihren ursprünglichen Namen zugreifen.
              Ja, ich habe nachgeschaut...
              Jedoch verstehe ich den zweiten Teil davon irgendwie nich Mein Ziel isses ja, das er nicht zweimal den gleichen Namen registriert, sondern abbricht, wenn er bereits vorhanden ist...

              Sorry, wenn ich mich vielleicht blöd anstelle, aber bin ziemlich neu im Umgang mit PHP/MySQL...

              Kommentar


              • #8
                du musst mit mysql_fetch_array das ergebnis von mysql_query auslesen
                PHP-Code:
                $aendern "SELECT_COUNT(username) FROM Benutzerdaten WHERE Username = '$username'";
                $update mysql_query($aendern);
                $anzahl=mysql_fetch_array($update);
                if (
                $anzahl[0]==0)
                  
                $insert='INSERT INTO ...';
                else
                  die(
                'Schon vorhanden');
                mysql_query($insert); 
                gott, hab ich heut nen guten tag
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Danke

                  Hmm, ich finde es wirklich sehr nett von Ihnen, das Sie versuchen mir zu helfen...

                  Ich habe Ihren Teil in mein Script mal so übernommen:
                  PHP-Code:
                  $aendern "SELECT_COUNT(username) FROM Benutzerdaten WHERE Username = '$username'";
                  $update mysql_query($aendern);
                  $anzahl mysql_fetch_array($update);
                  if(
                  $anzahl[0] == 0) { $insert="INSERT Benutzerdaten Set Username = '$username', Passwort = '$password', Email = '$email'"; } 
                  else { die (
                  "Der Name existiert bereits!"); }
                  $end mysql_query($insert); 
                  Trotzdem schreibt er noch immer zweimal den gleichen Namen in die Datenbank...

                  Kommentar


                  • #10
                    Danke für Ihre Hilfe "mrhappiness"

                    Ich habe den Code nun folgendermaßen umgeschrieben, jetzt funzt es:

                    PHP-Code:
                    $result mysql_query("SELECT COUNT(username) as anzahl FROM Benutzerdaten WHERE Username = '$username'");
                    while (
                    $array mysql_fetch_array($resultMYSQL_ASSOC)) { 
                    $anzahl $array[anzahl];

                    if(
                    $anzahl == 0
                    {
                    $eintrag "INSERT INTO Benutzerdaten (Username, Passwort, Email) VALUES ('$username', '$password', '$email')";
                    $eintragen mysql_query($eintrag); 
                    } else {
                    die (
                    "Der Name existiert bereits!");

                    Kommentar


                    • #11
                      hättest das umschreiben auch lassen können. der fehler war bloß, dass zwischen SELECT und COUNT kein leerzeichen sondern ein unterstrich war (hab ich einfach so von dir übernommen )

                      und noch was: ein du is mir lieber
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar

                      Lädt...
                      X