Nie można FETCH_ASSOC () przygotowanych oświadczenie w PHP Jeśli Fetch jest używany num_rows staje Zero

głosy
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 dla num_row = 0ponieważ wynik jest teraz w stowarzyszonej tablicy Kiedy użyłem Fetch()The num_rowssłusznie być 1, ale nie może uzyskać dostępu do tablicy, aby przypisać $row['username']do zmiennej sesji.

Utwórz 18/12/2018 o 11:15
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Pierwszym problemem jest nie otrzymujesz wynik, to znaczy tracisz mysqli_stmt :: get_result .

Twój kod ma być

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

Dlaczego ściągam jeśli nie wiersze zwracane są w porządku?

I są nadrzędne sesję tutaj

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

Ostatnia sesja $_SESSION['name']jest przesłanianie pierwszy.

Odpowiedział 18/12/2018 o 11:19
źródło użytkownik

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