Incapaz de FETCH_ASSOC () de la Declaración preparada en PHP, Fetch Si se Usado num_rows se convierte en cero

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

Test de num_row = 0porque el resultado está ahora en matriz asociativa, cuando he usado Fetch(), el num_rowsera correcta a ser 1, pero no puedo acceder a la matriz para asignar $row['username']a la variable de sesión.

Publicado el 18/12/2018 a las 11:15
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Su primer número es que no está recibiendo el resultado, quiero decir que se está perdiendo mysqli_stmt :: get_result .

Su código se supone que es

$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 qué ir a buscar si no devuelve ninguna fila derecha?

Y está sustituyendo la sesión aquí

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

La última sesión $_SESSION['name']está anulando la primera.

Respondida el 18/12/2018 a las 11:19
fuente por usuario

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