2013-07-11 5 views
-1

Итак, я работаю над разными PHP-скриптами весь день, поэтому не знаю, просто ли это мои глаза, и мне нужен перерыв или что-то еще: но я написал строку для подключения к базе данных MySQL и проверьте, существует ли имя пользователя. Тем не менее, я получаю сообщения об ошибках, которые, конечно, менее полезны (даже при обыске они, похоже, не применяются к тому, над чем я работаю, или просто ничего не отображаю.Синтаксическая ошибка, но я ее не вижу? (PHP/MySQLi_Query)

Ошибка одна (до того, как я положил или умереть (mysqli_error ($ MyCon)):

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 

Ошибка Two (ПОСЛЕ я положил в или умереть заявление):

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 

код, что это яблоки к (разместим больше, если вы хотите, это большой файл.):

$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)); 
} 

Спасибо, Тим

+0

Помимо исправления ошибки синтаксиса, обязательно проверьте на SQL-инъекцию. Вы должны действительно рассмотреть использование подготовленных инструкций. – Ruben

ответ

0

Я думаю, что вам нужно сделать перерыв

заменить

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

С

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

== Примечание в запросе

Это MySQL ошибка синтаксиса так $checktherow возвращает ложь

0

Запрос не удается, поэтому он присваивает $ checktherow значение "ложь". При запуске mysqli_num_rows ($ checktherow), он получает логическое значение вместо объекта mysqli_result, что он ожидает

Проблема ваш запрос, вы «SELECT * FROM пользователей WHERE username == $realUsername», но он должен быть «SELECT * FROM пользователей WHERE username = $realUsername»

+0

OH, Спасибо. Я отмечу это как ответ, когда это позволит мне! – user2457491

0

Dont использовать двойной равно, когда вы хотите, чтобы некоторые конкретные из базы данных, использовать его, когда вы хотите иметь сравнение между значениями:

изменения это: username == $realUsername

это: username = $realUsername

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

должен быть

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

Поместите один = знак вместо == в первой строке. Например, $checktherow = mysqli_query($myCon, "SELECT * FROM users WHERE имя пользователя = $ realUsername ") or die(mysqli_error($myCon));