Mysql Abfrage mittels PHP

Dunkelelf9

Grünschnabel
Ich offe ja mal das ich hier in der Richtigen Rubrik bin

Hallo Habe hier ein kleines Problem und hoff das einer von auch mir helfen kann. ?
Ich Lerne gerade PHP und bin bei Quaknet Tutorial angekommen, in der Rubrik LogIn Sytem und dazu habe ich mal eine Frage.

Hier der Auszug des Original Script
PHP:
/* Ab hier wird Überprüft ob ein Name schon existiert */
	$sql = 'SELECT id FROM user WHERE Username = ? LIMIT 1';
	$stmt = $db->prepare($sql);
	if (!$stmt) {
	    return $db->error;
	}
	$stmt->bind_param('s', $Username);
	$stmt->execute();
	$stmt->store_result();
	if ($stmt->num_rows) {
	    return 'Der Username wird bereits verwendet.';
	}
$stmt->close();
	$sql = 'INSERT INTO user(Username, email, Nickname) VALUES (?, ?, ?)';
	$stmt = $db->prepare($sql);
	if (!$stmt) {
	    return $db->error;
	}
	$stmt->bind_param('sss', $Username, $Mail, $Nickname);
	if (!$stmt->execute()) {
	    return $stmt->error;
	}
	$UserID = $stmt->insert_id;
	$sql = 'UPDATE user SET password = ? WHERE id = ?';
	$stmt = $db->prepare($sql);
	if (!$stmt) {
	    return $db->error;
	}
	$Hash = md5(md5($UserID).$Password);
	$stmt->bind_param('si', $Hash, $UserID);
	if (!$stmt->execute()) {
	    return $stmt->error;
	}
	return showInfo('Der Benutzer wurde hinzugefügt. Sie können sich nun Anmelden.');
}
return $a
Hier wird eine Abfrage gestatet die den Username in der DB Sucht ist dieser Vorhanden kommt eine Fehler Meldung.
ist dieser nicht vorhanden wird der Eintrag in der DB gemacht, soweit so gut klappt alles super bis hier hin.

Jetzt zu meinem Problem ich möchte jetzt aber mehere abfragen haben Sprich Nickname und E-Mail und da weiß ich nicht weiter.
Ich habe es schon mit:
PHP:
sql='SELECT id FROM user WHERE Username = ? OR Nickname = ? LIMIT 1';
Probiert was auch teilweise Funktionierte nur da hing ich in der Return anweissung fest.
Hier ist der Quellcode wie ich ihn jetzt habe wo es Funktioniert,wie ihr seht habe ich den Code einfach kopiert und das Gefählt mir nicht, da er so ellen Lang wird.
PHP:
/* Ab hier wird Überprüft ob ein Name schon existiert */
	$sql = 'SELECT id FROM user WHERE Username = ? LIMIT 1';
	$stmt = $db->prepare($sql);
	if (!$stmt) {
	    return $db->error;
	}
	$stmt->bind_param('s', $Username);
	$stmt->execute();
	$stmt->store_result();
	if ($stmt->num_rows) {
	    return 'Der Username wird bereits verwendet.';
	}
	$sql = 'SELECT id FROM user WHERE Nickname = ?  LIMIT 1';
	$stmt = $db->prepare($sql);
	if (!$stmt) {
	    return $db->error;
	}
	$stmt->bind_param('s', $Nickname);
	$stmt->execute();
	$stmt->store_result();
	if ($stmt->num_rows) {
	    return 'Der Nickname wird bereits verwendet.';
	}
	/* Ende der Überprüfung */
Gibt es eine Möglichkeit diesen code zu Minimieren ?
Ich hoffe ich habe mich Verständlich ausgetrückt.
Danke schon mal im Voraus
 
Hallo,
warum nutzt du OR?
Wenn du auf beide Spalten Prüfen willst kannst du dieses
PHP:
$sql = 'SELECT id FROM user WHERE Username = ? AND Nickname  = ? LIMIT 1';
Und folgendes noch. Im Parameter binder.
PHP:
$stmt->bind_param('s', $Username, $Nickname);
Dabei bin ich mir aber nicht 100% Sicher.
Mfg
 
Ich weiß nicht genau was du willst, aber probier es mal mit COUNT in der SQL.
z.B.

SELECT COUNT( * ) AS Anzahl FROM `user` WHERE Username = ?

dann einfach überprüfen mit
PHP:
if ($abfrage != '0'){ 
    echo 'username vorhanden!';
 }
 
Allso erst einmal Danke an euch Zwei für die Hilfe.

mit der AND funktion habe ich aber das selbe Problem wie vorher habe zwar den code jetzt minimiert aber die Return Anweisung gibt bei beiden Namen die selbe anweisung aus.

Wie schaffe ich es jetzt das die Return Anweisung auf das vorhandene ereignis reagiert ,
Sprich wen Username Vorhanden ist,dan soll stehen der Username wird bereits verwendet,
und wen Nickname vorhanden ist dan soll stehen der Nickname wird bereits verwendet.

Allso irgendwie Raff ich es nicht
 
Zurück