我有这个用于用户登录的准备声明。它工作正常,如果登录正确则返回1.
之后,我需要获取用户ID和他的用户名(从bd,我认为它更好然后从输入直接到会话)。
但我没有结果$rst["id"];
和$rst["user"];
问题是什么?
$stmt = $mysqli_link->prepare("SELECT id, user FROM cadastro WHERE binary user = ? AND binary senha = ?");
$stmt->bind_param('ss', $user, $senha);
$stmt->execute();
$stmt->store_result();
$num = $stmt->num_rows;
if($num > 0)
{
//Retorna os dados do banco
$rst = $stmt->fetch();
$id = $rst["id"];
$user = $rst["user"];
$sessionid = md5(time());
echo"$user - $id - $sessionid";
}
?>
谢谢你!
答案 0 :(得分:1)
您需要使用$rst = $stmt->fetch_assoc
。 $stmt->fetch()
仅在使用$stmt->bind_result()
后使用,它会将结果提取到该调用中指定的变量中。
请注意,将fetch_assoc()
与预准备语句一起使用需要安装MYSQLND驱动程序。