从mysqli获取一个值

时间:2013-06-23 00:52:08

标签: php mysqli

如果我知道我只会从数据库中收到一个密码,是否必须将查询结果放入数组中?我正在使用:

$sql = 'SELECT password FROM users WHERE userName="'.$username.'" LIMIT 1';
$result = $con->query($sql);
$row = $result->fetch_array(MYSQLI_NUM);
$hash = crypt($password,$row[0]);
if($row[0] == $hash){}

3 个答案:

答案 0 :(得分:0)

您可以改为使用list

list($passwd) = $result->fetch_array(MYSQLI_NUM);

if($passwd == $hash) {

};

这是PHP reference

答案 1 :(得分:0)

由于$ result-> fetch_array(MYSQLI_NUM)返回一个数组类型,你可以直接引用它:

if($ result-> fetch_array(MYSQLI_NUM)[0] == $ hash)     ...

答案 2 :(得分:0)

如果你已经在数据库中存储了哈希(你应该),那么你不必再次哈希。也可以在用户输入上使用预备语句。

$sql = $con->prepare("SELECT password FROM users WHERE userName=? LIMIT 1 ");
$sql->bind_param("s", $username);
$sql->execute();
$sql->bind_result($password_db);
while ($sql->fetch()) {

$hash = crypt($password,$password_db);
if($password_db == $hash){}

    }

http://www.php.net/manual/en/mysqli-stmt.prepare.php