Können FETCH_ASSOC () von Prepared Statements in PHP, Fetch Wenn num_rows Gebraucht wird zu Null

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

Der Test auf , num_row = 0weil das Ergebnis ist jetzt in assoziativem Array, als ich pflegte Fetch(), das num_rowswar richtig 1 zu sein, aber ich kann nicht die Array - Zugriff zuweisen $row['username']zu Session Variable.

Veröffentlicht am 18/12/2018 um 11:15
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Ihre erste Ausgabe wird Sie nicht das Ergebnis bekommen, ich meine , du verpasst mysqli_stmt :: get_result .

Ihr Code sein soll

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

Warum holen, wenn keine Zeilen direkt zurückgegeben werden?

Und Sie sind das Überschreiben der Sitzung hier

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

Die letzte Sitzung $_SESSION['name']ist das Überschreiben der ersten.

Beantwortet am 18/12/2018 um 11:19
quelle vom benutzer

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