sqlabfrage schaut nich nach
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
adresse
anzahl
ausgeben
code
denkfehler
eingabe
email
ergebnis
fang
folgendes problem
kleine bemerkung
message
re
resultat
testen
testzweck
vergleichen
vorhanden code
zeile
-
Hi leute,
ich hab ref="/tag/folgendes problem">folgendes problem
$sql="SELECT COUNT(*) FROM gamer WHERE nickname = ' ".$nickname."' "; $ergebnis=mysql_query($sql) or die("Konnte Abfrage nicht machen!"); if($ergebnis == 0){ echo"Nickname frei"; //nur zu Testzwecken ausgeben } else{ $message.= "<p class='error'>Nickname schon vorhanden!</p>"; } // Emailadresse $sql2 = mysql_query("SELECT COUNT(*) FROM gamer WHERE email ='".$email."' "); if ($sql2 != 0){ echo"Email noch nicht belegt"; } else{ $message.="<p class='error'>Dein E-Mail-Adresse ist schon vorhanden!</p>"; }
bei der nickname anfrage und der email abfrage ob der eingetragene nickname im formular eingegeben wurde schaut das script nicht nach wenn ich "==" durch "!=" bei der nickname abfrage speichert das script auch mehrfach den code was mach ich falsch? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du kannst nicht einfach die Variable mit den Datensätzen mit 0 vergleichen. Du musst mit num_rows abfragen, wieviele Ergebniss geliefert wurden. Diesen Wert kannst du dann mit 0 vergleichen.
Ich arbeite nur noch mit mySQLi, da würde das Ganze so aussehen:
$sql = "SELECT salt FROM user WHERE name = '$username'"; $result = $db->query($sql); if($result->num_rows == 1){
Google einfach mal nach mysql num_rows.
-
ah ok dank dir für deine antwort werd es dann gleich testen^^
if(mysql_num_rows($ergebnis) == 0){ echo"Nickname frei"; //nur zu Testzwecken ausgeben } else{ $message.= "<p class='error'>Nickname schon vorhanden!</p>"; } // Emailadresse $sql2 = mysql_query("SELECT COUNT(*) FROM gamer WHERE email ='".$email."' "); if (mysql_num_rows($sql2) != 0){ echo"Email noch nicht belegt"; } else{ $message.="<p class='error'>Dein E-Mail-Adresse ist schon vorhanden!</p>"; }
er gibt trotzdem nich die richtigen fehlermeldungen aus bzw legt er trotz das der nick vorhanden ist den nick nochmal an wo ist der denkfehler bei mir?
Beitrag zuletzt geändert: 13.10.2010 13:43:09 von gravedesign -
Hey,
Vorab eine kleine Bemerkung:
Die Eingaben sind nicht escaped!
Vor der Query muss unbedingt hoch das hier ausgeführt werden, um sql injection zu vermeiden:
$nickname = mysql_real_escape_string($nickname); $email = mysql_real_escape_string($email);
Nun zu deinem Problem:
Es gibt zwei Möglichkeiten:
Ich fang mal mit der an, die du dir ausgesucht hast:
$ergebnis = mysql_query("SELECT COUNT(*) AS Anzahl FROM gamer WHERE nickname = '".$nickname."' "); $res = mysql_fetch_object($ergebnis); if($res->Anzahl == 0){ echo"Nickname frei"; //nur zu Testzwecken ausgeben } else { $message.= "<p class='error'>Nickname schon vorhanden!</p>"; } // Emailadresse $ergebnis2 = mysql_query("SELECT COUNT(*) AS Anzahl FROM gamer WHERE email ='".$email."' "); $res2 = mysql_fetch_object($ergebnis2); if ($res2->Anzahl == 0){ echo"Email noch nicht belegt"; } else { $message.="<p class='error'>Deine E-Mail-Adresse ist schon vorhanden!</p>"; }
Das
ist ein Alias. Dadurch kann man im Resultat in der Spalte Anzahl lesen.AS Anzahl
nach mysql_query muss man immer noch fetchen. Ich mach das immer mit fetch_object, weil ich gerne Objektorientiert arbeite. Man kann aber auch fetch_assoc machen, wenn man will.
Nun Variante 2 mit mysql_num_rows:
mysql_num_rows zählt die Anzahl der Zeilen im Ergebnis. Ein "SELECT COUNT(*) ..." hat allerdings IMMER genau eine Zeile, also kann man das so nicht machen. Das geht etwas anders. Man wählt die jeweiligen gamer aus anstatt zu zählen:
$ergebnis = mysql_query("SELECT * FROM gamer WHERE nickname = '".$nickname."' "); if(mysql_num_rows($ergebnis) == 0){ echo"Nickname frei"; //nur zu Testzwecken ausgeben } else { $message.= "<p class='error'>Nickname schon vorhanden!</p>"; } // Emailadresse $ergebnis2 = mysql_query("SELECT * FROM gamer WHERE email ='".$email."' "); if(mysql_num_rows($ergebnis2) == 0){ echo"Email noch nicht belegt"; } else { $message.="<p class='error'>Deine E-Mail-Adresse ist schon vorhanden!</p>"; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage