Невозможно выполнить Fetch_Assoc () подготовленного оператора в PHP, если используется извлечение, num_rows становится нулевым

public function Login($username, $pass){
if(!empty($username) && !empty($pass)){
$user = $this->link->prepare("SELECT username, pass FROM users WHERE username=? AND pass=?");
$user->bind_param("ss", $username, $pass);
$user->execute();

$row=$user->fetch_assoc();

If($user->num_rows==1){
session_start();
$_SESSION['name']=$row['username'];
$_SESSION['name']=true;
header("Location: admin.php");
}else{
echo "Invalid Username and Password";
}

}else{
echo "Empty Login Details";
}
}

Тест для num_row = 0 потому что результат теперь в ассоциированном массиве,
Когда я использовал Fetch(), num_rows было правильно, чтобы быть 1, но я не могу получить доступ к массиву, чтобы назначить $row['username'] Переменная сеанса.

0

Решение

Ваша первая проблема — вы не получаете результат, я имею в виду, что вы пропали без вести mysqli_stmt :: get_result.

Ваш код должен быть

$user->bind_param("ss", $username, $pass);
$user->execute();
$result = $user->get_result();

if($result->num_rows === 1){
$row = $result->fetch_assoc()
$_SESSION['name']=$row['username'];
header("Location: admin.php");
}else{
echo "Invalid Username and Password";
}

Зачем выбирать, если строки не возвращаются правильно?

И вы отменяете сеанс здесь

$_SESSION['name']=$row['username'];
$_SESSION['name']=true;

Последняя сессия $_SESSION['name'] переопределяет первый.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector