Não é possível fetch_assoc () da Declaração preparada em PHP, Se o esforço é Usado torna-se zero num_rows

votos
0
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;
    }
}

O teste para num_row = 0porque o resultado está agora em conjunto associado, Quando eu usei Fetch(), a num_rowsera correta a ser 1, mas eu não posso acessar a matriz para atribuir $row['username']a Sessão variável.

Publicado 18/12/2018 em 11:15
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Seu primeiro problema é que você não está recebendo o resultado, quero dizer que está faltando mysqli_stmt :: get_result .

Seu código é suposto ser

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

Por que buscar se há linhas são retornadas certo?

E você está substituindo a sessão aqui

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

A última sessão $_SESSION['name']está substituindo o primeiro.

Respondeu 18/12/2018 em 11:19
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more