Ralf: SQL-Abfrage

Hallo,

ich will ein Anmeldescript schreiben, um zu testen ob der user schon vorhanden ist verwende ich folgendes script (email ist der username):

$sql="SELECT * FROM user WHERE user_login=".$email;
$result=mysql_query($sql,$connect);

if ($result) {
 echo "Ihr Login-Name <b>$login</b> ist bereits vorhanden.";
} else {
 echo "Sie wurden erfolgreich angemeldet.";

$sql2="INSERT INTO user (user_login) VALUES ('$email');";
 mysql_query($sql2,$connect);
}

leider funktioniert das nicht. der user wird immer angelegt, unabhängig ob er vohanden ist oder nicht.

danke für die hilfe.

gruss

ralf

  1. Moin!

    $sql="SELECT * FROM user WHERE user_login=".$email;
    $result=mysql_query($sql,$connect);

    if ($result) {
    echo "Ihr Login-Name <b>$login</b> ist bereits vorhanden.";
    } else {
    echo "Sie wurden erfolgreich angemeldet.";

    $sql2="INSERT INTO user (user_login) VALUES ('$email');";
    mysql_query($sql2,$connect);
    }

    leider funktioniert das nicht. der user wird immer angelegt, unabhängig ob er vohanden ist oder nicht.

    Ich würde mal sagen: Kein Ergebnis ist auch ein Ergebnis. Jedenfalls würde ich persönlich die Datenbankabfrage auch mal angucken (mysql_fetch_array) - wenn da was rauskommt, gibts in der DB schon Daten, wenn da nichts rauskommt, dann scheint die email noch nicht registriert worden zu sein.

    - Sven Rautenberg

  2. Moin

    leider funktioniert das nicht. der user wird immer angelegt, unabhängig ob er vohanden ist oder nicht.

    if ($result) {

    Das da überprüft auch nur, ob die Anfrage erfolgreich an die Datenbank gesendet und von dieser verarbeitet wurde, also zum Beispiel keine Syntaxfehler aufweist. Wenn du wissen willst, ob bei der Anfrage auch _ein_ Ergebnis rausgekommen ist, musst du
    if(mysql_num_rows($result) == !) {
    verwenden. Die Überprüfung if(!$result) empfiehlt sich übrigens trotzdem. Dann kannst du feststellen dass an der Abfrage irgendwas falsch ist und dein Skript mit einer Fehlermeldung abbrechen. Ansonsten gibt mysql_num_rows() oder die meisten anderen mysql-Funktionen nachher nur eine unansehnliche Default-Fehlermeldung ("... is not a valid result ressource" oder so).

    --
    Henryk Plötz
    Grüße aus Berlin

    1. Moin

      if(mysql_num_rows($result) == !) {

      ^
      *grmpf* langsam werde ich zum AOLer, dass da muss natürlich eine 1 sein.

      --
      Henryk Plötz
      Grüße aus Berlin

      1. Hi,

        funktioniert leider nicht. Es wird trotzdem ein neuer datensatz mit dem gleichen username angelegt.

        es soll vor dem anlegen eben geprüft werden, ob der user schon vorhanden ist. als username verwende ich die email.

        hast du noch ne andere idee?

        gruss

        ralf

  3. Hi,

    abgesehen von den Anmerkungen meiner Vorredner,
    sollte die SQL-Abfrage vielleicht statt

    $sql="SELECT * FROM user WHERE user_login=".$email;

    $sql="SELECT * FROM user WHERE user_login='".$email."';";

    heißen...

    Schönen Gruß

    Rainer