我的登录页面有一个MySQLi查询,它应该检查用户名和密码,非常简单。这是查询:
$stmt = $mysqli->prepare("SELECT username, pass FROM users WHERE username=? and pass=?");
$stmt->bind_param('ss', $username, $password);
$stmt->execute() or die($stmt->error);
$stmt->bind_result($username, $password);
/*
* Set $_SESSION variables...
*/
if ($stmt->fetch()) {
$_SESSION['logged_in'] = 1;
$_SESSION['id'] = $username;
echo 'Works';
}
我的问题在这里,查询不会执行,但会回显“Works”。我的表名是具有行用户名和密码的用户。有谁知道我做错了什么?
编辑:我怀疑查询不会执行,因为当我输入错误的PW时,它也会回显“Works”。
答案 0 :(得分:0)
使用num_rows
:
if ($stmt->num_rows > 0) {
$stmt->fetch();
$_SESSION['logged_in'] = 1;
$_SESSION['id'] = $username;
echo 'Work';
}
else {
echo 'Not work!';
}
答案 1 :(得分:0)
我怀疑你运行的真实代码中的 你正在调用fetch()两次。
或者那种类似错字的错误。
如果没有提取数据,您在此处发布的代码将永远不会回显“工作”(甚至“工作”)。
答案 2 :(得分:0)
我在代码中看不到'Works'(以复数形式工作)。有一个代码在其他地方生成输出“Works”。该错误不在您在此处提供的代码中。
您是否尝试过while子句而非'if'这样?
while ($stmt->fetch()) {
$_SESSION['logged_in'] = 1;
$_SESSION['id'] = $username;
echo 'Work';
exit;
}
echo 'Not Work'