mysql + eingabevergleich
Ronny
- php
0 Tom0 Thomas Luethi0 Ronny
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
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
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
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
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
$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