PHP не выбирает никакого значения из MySQL с использованием подготовленного состояния - PullRequest
0 голосов
/ 23 октября 2018

Я работаю над переписыванием php + mysql игры KDE konquest с кучей добавленных изменений.

В данный момент я довольно в начале, с работающей регистрацией (Проверено, пользователи создаются в базе данных, устанавливаются куки и т. Д.).Однако после создания пользователя следующий код не выводит имя пользователя:

if(isset($_COOKIE["user_cookie"])){
    $sql_update_user_time = 'Select user_name from users WHERE user_cookie=?';
    $stmt=mysqli_prepare($mysqli,$sql_update_user_time);
    mysqli_stmt_bind_param($stmt,"i",$_COOKIE["user_cookie"]);
    mysqli_stmt_bind_result($stmt,$user_name);
    var_dump("execute:".mysqli_stmt_execute($stmt)." ");
    var_dump("fetch:".mysqli_stmt_fetch()." ");
    echo "<h1>Greetings $user_name! The empire's fleet awaits your command. </h1>";
}

Вместо этого здесь вывод (после входа в систему):

<!DOCTYPE html>
<html>
	<head>
		<title>
			index of php-on-quest.
		</title>
	</head>
	<body>
		bool(true)
NULL
<h1>Greetings ! The empire's fleet awaits your command. </h1>	</body>
</html>

Просмотр документации, возвращающий значение NULL, означает, что ошибки не было, но данные не были извлечены из базы данных.

Я проверил, если я вручную запускаю ожидаемый SQL-запрос, он возвращает ожидаемое, то есть ровно одно имя пользователя.

Минимальная база данных:

table users:
user_id:int(11) primary key
user_name: char(11)
user_cookie:int(11) unique

1 Ответ

0 голосов
/ 23 октября 2018

Одной из основных проблем является то, что вы пропустили передачу $stmt в mysqli_stmt_fetch () .Это вызвало бы ошибку (или, по крайней мере, предупреждение), которая сказала бы вам, в чем проблема.Пожалуйста, смотрите комментарий FrankerZ о включении error_reporting !

Conclusio:
эта строка

var_dump("fetch:".mysqli_stmt_fetch()." ");

должна быть

var_dump("fetch:".mysqli_stmt_fetch($stmt)." ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...