如何在PHP中返回此值?

时间:2012-12-08 00:10:53

标签: php mysql mysqli

我遇到了这段代码的问题:

$loginrequest = $mysqli->prepare(
    "SELECT name, password, salt FROM users WHERE name = ? OR email = ?");
$loginrequest->bind_param("ss", $login, $login);
$loginrequest->execute();
$loginrequest->bind_result($name, $encrypted_password, $salt);

while ($loginrequest->fetch()) {

  $hash = $this->checkhashSSHA($salt, $password);

  if ($encrypted_password == $hash) {
    return $name;
  }
  else {
    return false;
  }
}

如您所见,我想查看用户登录信息,如果密码正确,我想返回用户名,否则返回false。

但是,我不是必须关闭$mysqli查询吗?

$loginrequest->close();
$mysqli->close();

因为值$name仅在while循环中可用(如果我理解正确的话)。我的意思是我之前可以声明一个字符串并将其更改为$name值,但是有必要关闭它吗?

顺便说一下,我不能使用store_result,因为PHP版本太旧了。

1 个答案:

答案 0 :(得分:0)

  • 结算语句没有未绑定的提取变量。
  • 您获取一行并返回,因此可以删除while

这将比较密码和关闭语句:

    $loginrequest->fetch();
    $loginrequest->close();
    $hash = $this->checkhashSSHA($salt, $password);
    if ($encrypted_password == $hash)
      return $name;
    return false;