2013-07-11 2 views
-1

Donc j'ai travaillé sur différents scripts PHP toute la journée, donc je ne sais pas si c'est juste mes yeux et j'ai besoin d'une pause ou quoi: mais j'ai écrit une ligne pour me connecter à la base de données MySQL, et vérifier si un nom d'utilisateur existe déjà. Cependant, je reçois bien sûr des messages d'erreur qui ne sont pas très utiles (même quand ils sont recherchés, ils ne semblent pas s'appliquer à ce sur quoi je travaille ou simplement ne montrent rien.)Erreur de syntaxe mais je ne le vois pas? (PHP/MySQLi_Query)

Erreur 1 (avant de mettre ou mourir (mysqli_error (mycon de $)):

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/icangame/public_html/dev/php/userRegister.php on line 40 

erreur Deux (Après avoir mis en ou mourir déclaration):

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== `user`' at line 1 

code que cette pomme à (affichera plus si vous voulez, c'est un gros fichier.):

$checktherow = mysqli_query($myCon, "SELECT * FROM users WHERE `username` == `$realUsername`") or die(mysqli_error($myCon)); 
if (mysqli_num_rows($checktherow) == 0) 
{ 
    mysqli_query($myCon, "INSERT INTO users (username, password, email) 
     VALUES ('$realUsername', '$realPassword', '$email')") or 
     die(mysqli_error($myCon)); 
} 

Merci, Tim

+0

En plus de corriger l'erreur de syntaxe, assurez-vous de vérifier dans l'injection SQL. Vous devriez vraiment envisager d'utiliser des instructions préparées à la place. – Ruben

Répondre

0

Je pense que vous avez besoin d'une pause

remplacer

$checktherow = mysqli_query($myCon, "SELECT * FROM users WHERE `username` == `$realUsername`") or die(mysqli_error($myCon)); 

AVEC

$checktherow = mysqli_query($myCon, "SELECT * FROM users WHERE `username` = `{$realUsername}`") or die(mysqli_error($myCon)); 

REMARQUE == dans votre requête

Il a commis une erreur de syntaxe MySQL est donc $checktherow renvoie false

0

La requête échoue, il attribue $ checktherow une valeur de "faux". Lorsque vous exécutez mysqli_num_rows (checktherow de $), il devient une valeur booléenne au lieu d'un objet mysqli_result qu'il attend

Le problème est votre requête, vous avez « SELECT * FROM utilisateurs WHERE username == $realUsername », mais il devrait être « SELECT * FROM utilisateurs WHERE username = $realUsername »

+0

OH, merci. Je vais marquer cela comme la réponse quand ça me permet! – user2457491

0

ne pas utiliser deux égaux quand vous voulez une base de données spécifique, utilisez quand vous voulez avoir la comparaison entre les valeurs:

changer cela: username == $realUsername

ceci: username = $realUsername

0
$checktherow = mysqli_query($myCon, "SELECT * FROM users WHERE `username` == `$realUsername`") or die(mysqli_error($myCon)); 

devrait être

$checktherow = mysqli_query($myCon, "SELECT * FROM users WHERE `username` ='".$realUsername."'") or die(mysqli_error($myCon)); 
0

Mettez un signe = au lieu de == dans votre première ligne. Comme ceci $checktherow = mysqli_query($myCon, "SELECT * FROM users WHERE nom d'utilisateur = $ realUsername ") or die(mysqli_error($myCon));

Questions connexes