запрос возвращает ноль и ожидает 1 - PullRequest
0 голосов
/ 06 января 2019

Это проверка имени, и ожидается результат 1 при проверке имени пользователя с пользователями в моей базе данных.

К сожалению, я получаю нулевой ответ (поэтому выдает ошибку 5). Пожалуйста, если кто-то видит проблему с php, я буду очень признателен

код

$username = $_POST["name"];
$password = $_POST["password"];
$namecheckquery = "SELECT username FROM users WHERE username = ' " . $username . " ' ";

$namecheck = mysqli_query($con, $namecheckquery) or die("2: name check query failed"); // error code #2 = name check query failed
if(mysqli_num_rows ($nameCheck) !=1)
{
    echo "5: Either no user with name, more than one."; //error code number 5 number names does not match one
    exit();
}

1 Ответ

0 голосов
/ 06 января 2019

Если вы напечатаете запрос, вы заметите, что вокруг $ username есть пробелы, и вы не сможете получить результат, если не вставите имя пользователя с этими пробелами.

Неверная строка запроса при вводе имени Джона в качестве имени пользователя:

SELECT username FROM users WHERE username = ' John '
//                             Wrong spaces  ^    ^

Удалить пробелы между двойными и одинарными кавычками:

$namecheckquery = "SELECT username FROM users WHERE username = '" . $username . "'";

Еще лучше, убрать пробелы и избежать конкатенации:

$namecheckquery = "SELECT username FROM users WHERE username = '$username'";

PHP заменит переменные соответствующими значениями, когда строка заключена в двойные кавычки.

Наконец, запрос не возвращает ноль, функция mysqli_num_rows ($ nameCheck) возвращает 0, поскольку совпадений не найдено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...