J'ai examiné les nombreux autres articles qui étaient similaires à mon numéro et mis en œuvre leurs solutions (autant que je sache) aussi exactement que possible. Cependant, chaque fois que j'exécute ce script, le code du bloc else est exécuté (même lorsque le nom d'utilisateur entré est déjà présent).
Le nom de la table est "Utilisateurs" et la colonne que je cherche est "nom d'utilisateur" . L'entrée de mon formulaire a été lue dans $username
et j'ai vérifié qu'elle était lue correctement à l'aide de echo . $con
contient la connexion au serveur.
À un moment donné, j'ai également mis dans echo $query
(rien n'était imprimé) et echo mysql_num_rows($query)
(rien n'était imprimé).
Voici le segment pertinent du code. J'apprécierais vraiment quelques conseils.
$query = mysql_query("SELECT username FROM Users WHERE username=$username", $con);
if (mysql_num_rows($query) != 0)
{
echo "Username already exists";
}
else
{
...
}
EDIT: Apparemment, j'étais censé utiliser mysqli pour mon serveur et la façon dont j'ai vérifié num_rows était de faire $ query-> num_rows puisqu'il s'agissait d'une propriété de l'objet. Merci pour votre aide!
Essaye ça:
$query = mysql_query("SELECT username FROM Users WHERE username='$username' ")
N'ajoutez pas $con
à la fonction mysql_query()
.
Avertissement: l'utilisation de la variable username
dans la chaîne passée à mysql_query
, comme indiqué ci-dessus, est un vecteur d'attaque par injection SQL trivial dans la mesure où username
dépend des paramètres de la requête Web (chaîne de requête, en-têtes, corps de la requête, etc.) ou autre. paramètres qu'une entité malveillante peut contrôler.
$ query = mysql_query ("SELECT nom d'utilisateur DES utilisateurs WHERE nom d'utilisateur = '$ username'")
Utilisez des instructions préparées , n'utilisez pas mysql car il est obsolète.
// 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
}