Ronny: mysql + eingabevergleich

hallo, ich möchte überprüfen, ob ein benutzer, welcher sich gerade anmeldet und seinen namen frei wählen darf schon existiert, bzw. ob der name schon vergeben ist.

kann ich das irgendwie in die abfrage mit reinbasteln ( mit WHERE ? ) oder wie lässt es sich effizient lösen ?

so in der art

$usr_abfrage ="SELECT usr_name FROM Login WHERE ( mein vergleich )";

danke

ronny

  1. Hello,

    wenn Du möchtest, dass der Name eineindeutig bleibt, musst Du eben einen Unique Index auf das Feld legen und dann einfach einen Insert-Versuch machen. Die Fehlermeldung von mysql_wird Dich dann darüber belehren, ob es den Teilnehmer schon gab.

    Grüße

    Tom

    1. wenn Du möchtest, dass der Name eineindeutig bleibt, musst Du eben einen Unique Index auf das Feld legen und dann einfach einen Insert-Versuch machen. Die Fehlermeldung von mysql_wird Dich dann darüber belehren, ob es den Teilnehmer schon gab.

      mmhm, naja wäre möglich, aber die überprüfung muss stattfinden, bevor überhaupt der insert kommen soll.

      danke

      1. Hello,

        wenn Du möchtest, dass der Name eineindeutig bleibt, musst Du eben einen Unique Index auf das Feld legen und dann einfach einen Insert-Versuch machen. Die Fehlermeldung von mysql_wird Dich dann darüber belehren, ob es den Teilnehmer schon gab.

        mmhm, naja wäre möglich, aber die überprüfung muss stattfinden, bevor überhaupt der insert kommen soll.

        Na, dann musst Du eben einen gesonderten SELECT auf den Namen durchführen und nach den mysql_num_rows() fragen.

        Und wenn Du sicher gehen willst, dass das auch noch 2ms später so sit, wenn Du dann den Datensatz einfügst, dann musst Du für den gesamten Vorgasng die Tabelle sperren.

        Grüße

        Tom

  2. Hallo,

    $usr_abfrage ="SELECT usr_name FROM Login WHERE ( mein vergleich )";

    Bei "Deinem Vergleich" musst Du also schauen, ob in
    der entsprechenden Spalte in der Datenbank genau
    dieser Wert vorkommt.

    $wunschnameharmlos=mysql_escape_string($_REQUEST['wunschname']);

    $query="SELECT usr_name FROM Login WHERE usr_name='$wunschnameharmlos'";

    $result = mysql_query($query, $verbindung)
       or die("Query: $query <br>MySQL-Fehler: " . mysql_error());

    $anzahlzeilen = mysql_num_rows($result);

    if $anzahlzeilen>0
      { print("Sorry, Name schon vergeben!"); /* u.s.w. */ }
    else
      { /* Weiterfahren... */ }

    http://www.php.net/manual/de/function.mysql-escape-string.php
    http://www.schattenbaum.net/php/abfrage2.php
    http://www.mysql.com/doc/en/SELECT.html

    ---

    Natuerlich ginge es auch mit einer anderen MySQL-Abfrage.

    SELECT COUNT (*) FROM Login WHERE usr_name='$wunschnameharmlos'

    http://www.mysql.com/doc/en/Counting_rows.html
    Dann steht direkt die Anzahl Zeilen im SQL-Resultat.

    Gruesse,

    Thomas

    1. $usr_abfrage ="SELECT usr_name FROM Login WHERE ( mein vergleich )";

      Bei "Deinem Vergleich" musst Du also schauen, ob in
      der entsprechenden Spalte in der Datenbank genau
      dieser Wert vorkommt.

      $wunschnameharmlos=mysql_escape_string($_REQUEST['wunschname']);

      $query="SELECT usr_name FROM Login WHERE usr_name='$wunschnameharmlos'";

      $result = mysql_query($query, $verbindung)
         or die("Query: $query <br>MySQL-Fehler: " . mysql_error());

      $anzahlzeilen = mysql_num_rows($result);

      if $anzahlzeilen>0
        { print("Sorry, Name schon vergeben!"); /* u.s.w. */ }
      else
        { /* Weiterfahren... */ }

      hhmh, hab jetzt mal ne weile gebastelt, also dies funktioniert nicht so. leider :(

      ich bekomme immer ne 0 geliefert

      na mal schauen was ich noch so machen kann

      trotzdem danke