我做了一个准备好的声明,应该登录用户,一切正常,但我遇到bind_result()
的问题。我的意思是它根本不起作用,我无法获得查询结果并将其分配给SESSION
这是我的代码:
session_start();
$sesUsername = "";
$sesCid = "";
$sesFirstName = "";
$sesLastName = "";
$mysqli = new mysqli($host_l, $username_l, $password_l, $dbName_l);
$loginQuery = "SELECT username, cid, first_name, last_name FROM Users WHERE username=? and password=?";
if($stmt = $mysqli->prepare($loginQuery)){
$stmt->bind_param('ss',$usernameEsc, $passwordEsc);
$stmt->execute();
/* Store the result (to get properties) */
$stmt->store_result();
/* Get the number of rows */
$num_of_rows = $stmt->num_rows;
/* Bind the result to variables */
$stmt->bind_result($sesUsername, $sesCid, $sesFirstName, $sesLastName);
if($num_of_rows == 1){
$_SESSION['username']= $sesUsername; // This is not working
return true;
}
else {
http_response_code(401);
}
/* free results */
$stmt->free_result();
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
代码会将我重定向到成员区域,但在那里会话变量username
为空。
为什么我无法让它发挥作用?我知道我错过了一些非常小的东西,但作为一个新手,我无法发现问题。
答案 0 :(得分:4)
你必须这样做:
$stmt->fetch();
将结果输入变量。
答案 1 :(得分:1)
试试这个:
$stmt->bind_result($sesUsername, $sesCid, $sesFirstName, $sesLastName);
while ($stmt->fetch()) {
$_SESSION['username']= $sesUsername;
}