nach Datensätze suchen
Sapzero
- datenbank
0 Tom0 Jörg Peschke0 Sapzero
Hi,
ich habe ein Problem undzwar möchte ich in meiner angelegten Datenbank nach einen bestimmten Datensatz suchen. Die Tabelle hat die spalten Username, Vorname und Nachname. Ich will die Datenbank nach dem Usernamen durchsuchen und falls der Username schon vergeben ist soll er eine Nachricht zurückgeben. Dies habe ich so gemacht.
$vergleich = "SELECT Username FROM tblRegistry
WHERE Username = '$username'";
$gefunden = mysql_query($vergleich);
if($gefunden)
{
echo "Username vorhanden<br>";
}
else{
echo "Username wird nicht benutzt<br>";
}
Es wird immer nur Username vorhanden ausgegeben. Wieso funktioniert es nicht?
Ich hoffe jemand kann mir weiterhelfen und ich bedanke mich schon im voraus.
PS:Ich hab das alles mit PHP und MySQl gemacht.
Mit freundlichen Grüßen
Sapzero
Hello,
$vergleich = "SELECT Username FROM tblRegistry
WHERE Username = '$username'";
$gefunden = mysql_query($vergleich);
if($gefunden) ## bedeutet, dass das Query fehlerfrei ausgeführt werden konnte.
{
echo "$username wurde ".mysql_num_rows($gefunden)." Mal gefunden";
}
Und lies Dir das Manual zu mysql_query() und zu mysqli_query() durch
http://www.php.net/manual/en/function.mysql-query.php
http://www.php.net/manual/en/mysqli.query.php
und im MySQL-Handbuch:
http://dev.mysql.com/doc/refman/5.1/en/mysql-query.html
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo Tom,
danke auch für deine Hilfe. Es hat super geklappt.
Ich wünsche dir ein Frohes Neues Jahr.
Gruß
Sapzero
echo $begrüßung;
$vergleich = "SELECT Username FROM tblRegistry WHERE Username = '$username'";
echo "$username wurde ".mysql_num_rows($gefunden)." Mal gefunden";
So sollte man es nicht machen. Zum einen fehlt die kontextgerechte Behandlung von $username beim Einfügen als Stringwert in die Query (Stichwort: mysql_real_escape_string()). Und zum anderen sollte man COUNT(*) verwenden, wenn man nur eine Anzahl und nicht die Daten selbst haben möchte. Um die Ergebnismenge mit mysql_num_rows() zählen lassen zu können, muss sie vollständig vom Server zum Client übertragen werden. Dies macht PHP (genauer: die MySQL-Client-API) übrigens bei jedem mysql_query() im Hintergrund (vergleiche mysql_unbuffered_query()). Die Ergebnismenge anschließend unverarbeitet zu ignorieren, ist Aufwand, den man dem System ersparen kann. In diesem Fall werden es nur ein paar Bytes sein, doch bei größeren Datenmengen fällt eine Zählung nach diesem Prinzip mehr ins Gewicht.
echo "$verabschiedung $name";
Hallo,
Es wird immer nur Username vorhanden ausgegeben. Wieso funktioniert es nicht?
Schau dir nochmal die Online-Hilfe zu mysql_query an: mysql_query liefert nur dann FALSE zurück, wenn die Anfrage aus irgendeinem Grund nicht ausgeführt werden kann (Die Tabelle nicht existiert, ein Syntax-Fehler vorliegt usw.) - Deine Anfrage ist aber ja korrekt, sie liefert eben nur keinen Datensatz, das Ergebnis ist also immer TRUE.
Benutze zur Auswertung, ob der Username gefunden wird oder nicht
am besten die Funktion mysql_num_rows, damit kannst Du zählen, wieviele Datensätze gefunden werden.
Hope that helps,
Viele Grüße,
Jörg
PS: Ich hoffe, Du hast die Variable $username entsprechend escaped, sonst kannst Du Dir ggf. ne böse SQL-Injection einfangen - falls nicht, nutze etwas wie mysql_real_escape_string.
Hallo Jörg,
danke für deine Hilfe. Es funktioniert jetzt.
Ich wünsche dir ein Frohes Neues Jahr.
Gruß
Sapzero