Php 使用bind_result并将_结果存储在prepared语句中
我有一个mysqli登录脚本,在这里可以正常工作:Php 使用bind_result并将_结果存储在prepared语句中,php,mysqli,Php,Mysqli,我有一个mysqli登录脚本,在这里可以正常工作: if (isset($_POST['loginSubmit'])) { $loginCheck = $mysqli->prepare('SELECT cms_user, cms_email FROM cms_accounts WHERE cms_email=? AND cms_password=?'); $loginCheck->bind_param('ss',$_POST['loginEmail'],sha1($_POST
if (isset($_POST['loginSubmit'])) {
$loginCheck = $mysqli->prepare('SELECT cms_user, cms_email FROM cms_accounts WHERE cms_email=? AND cms_password=?');
$loginCheck->bind_param('ss',$_POST['loginEmail'],sha1($_POST['loginPass']));
$loginCheck->execute();
$loginCheck->store_result();
if ($loginCheck->num_rows > 0) {
$_SESSION['loggedIn'] = '1';
}
else { $loginFail = true; }
$loginCheck->close();
}
现在,我想将查询中选择的数据添加到其他会话变量中。所以我添加了bind_result()
和fetch()
如下:
if (isset($_POST['loginSubmit'])) {
$loginCheck = $mysqli->prepare('SELECT cms_user, cms_email FROM cms_accounts WHERE cms_email=? AND cms_password=?');
$loginCheck->bind_param('ss',$_POST['loginEmail'],sha1($_POST['loginPass']));
$loginCheck->execute();
$loginCheck->bind_result($loginUser,$loginEmail);
$loginCheck->fetch();
$loginCheck->store_result();
if ($loginCheck->num_rows > 0) {
$_SESSION['loggedIn'] = '1';
$_SESSION['loginUser'] = $loginUser;
$_SESSION['loginEmail'] = $loginEmail;
}
else { $loginFail = true; }
$loginCheck->close();
}
突然,登录失败了。是否可以在同一查询中使用
store\u result()
和bind\u result()
?是否有写入命令?我认为这是$loginCheck->store_result()代码>导致您的问题,您不需要它。只需删除它并进行测试,我在代码中看不到任何其他问题。谢谢,但这似乎对我不起作用。登录名实际上不再工作。您确定您的查询返回正在运行并返回结果吗?回显您的查询,并在phpMyAdminy中运行它您的顺序很好,这是$loginCheck->store_result()
应该在$loginCheck->bind_result()上的行上代码>如果你想让它保持良好状态,它是关于帮助而不是要点:)