Php 使用bind_result并将_结果存储在prepared语句中

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

我有一个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['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()上的行上如果你想让它保持良好状态,它是关于帮助而不是要点:)