Ich habe mir die vielen anderen Beiträge, die meinem Thema ähnelten, angesehen und ihre Lösungen (soweit ich das beurteilen kann) so genau wie möglich umgesetzt. Bei jeder Ausführung dieses Skripts wird jedoch der Code im else-Block ausgeführt (auch wenn der eingegebene Benutzername bereits vorhanden ist).
Der Tabellenname ist 'Benutzer' und die Spalte, die ich zu suchen versuche, ist 'Benutzername' . Die Eingabe aus meinem Formular wurde in $username
eingelesen, und ich habe mit echo überprüft, ob sie richtig eingelesen wurde. $con
enthält die Verbindung zum Server.
Irgendwann habe ich auch echo $query
(nichts wurde gedruckt) und echo mysql_num_rows($query)
(nichts wurde gedruckt) eingefügt.
Hier ist das relevante Segment des Codes. Würde mich wirklich über ein paar Tipps freuen.
$query = mysql_query("SELECT username FROM Users WHERE username=$username", $con);
if (mysql_num_rows($query) != 0)
{
echo "Username already exists";
}
else
{
...
}
BEARBEITEN: Anscheinend sollte ich mysqli für meinen Server verwenden. Auf diese Weise habe ich die num_rows darauf überprüft, indem ich $ query-> num_rows gemacht habe, da es eine Eigenschaft des Objekts war. Danke für all die Hilfe!
Versuche dies:
$query = mysql_query("SELECT username FROM Users WHERE username='$username' ")
Fügen Sie nicht $con
zur mysql_query()
-Funktion hinzu.
Haftungsausschluss: Die Verwendung der Variable username
in der an mysql_query
übergebenen Zeichenfolge ist, wie oben gezeigt, ein trivialer Angriffsvektor für die SQL-Injektion. Insofern hängt die username
von den Parametern der Webanforderung ab (Abfragezeichenfolge, Header, Anforderungshauptteil usw.) oder anders Parameter, die eine bösartige Entität kontrollieren kann.
$ query = mysql_query ("SELECT username FROM Benutzer WHERE username = '$ username'")
Verwenden Sie vorbereitete Anweisungen , verwenden Sie nicht mysql, da es veraltet ist.
// check if name is taken already
$stmt = $link->prepare("SELECT username FROM users WHERE username = :username");
$stmt->execute([
'username' => $username
]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if (isset($user) && !empty($user)){
// Username already taken
}