如何用php从mySql数据库中检索哈希密码?

时间:2015-10-15 12:56:03

标签: php mysql

我的问题应该很简单!虽然,我找不到正确的答案!

我需要使用php从mySql数据库中检索“用户名”的“哈希密码”,然后我需要将其存储在变量中,我该怎么做?

我得到的只是"Resource id #5"

这是我的代码:

$query = "SELECT hashed_password ";
$query .= "FROM users ";
$query .= "WHERE username = '{$username}' ";
$query .= "AND hashed_password = '{$hashed_password}' ";
$query .= "LIMIT 1";
$result_set = mysql_query($query);
echo "$result_set"; 
echo '</br>';

2 个答案:

答案 0 :(得分:1)

首先,让我们使用支持预准备语句的MySQL库 - 否则,我们将来会遇到SQL注入问题。现在,回到实际的问题/答案。

如果我们使用MySQLi,我们有一些功能可以帮助我们。以下是您的问题答案的示例,其中包含代码注释以帮助您完成此操作:

// create our db connection
$mysqli = new mysqli('localhost', 'db_username', 'db_password', 'db_table');

// create a Prepared Statement to query to db
$stmt = $mysqli->prepare('SELECT hashed_password FROM users WHERE username = ? LIMIT 1');

// dynamically bind the supplied "username" value
$stmt->bind_param('s', $username);

// execute the query
$stmt->execute();

// get the first result and store the first column in the `$hashed_password` variable
$stmt->bind_result($hashed_password);
$stmt->fetch();

// close our Prepared Statement and the db connection
$stmt->close();
$mysqli->close();

echo $hashed_password;

查看mysqli::prepare()的PHP文档了解更多示例=]

注意:我高度建议避免使用mysql_query()(和系列)功能。它们不仅被弃用,而且使用起来也很不安全。

答案 1 :(得分:0)

您需要从查询返回的mysql资源中获取数据。

只需通过mysql_fetch_assoc($result_set)即可。它会在一个漂亮而有序的arraay中返回你的数据,每次调用前进一行。 意思是你能做到的 while ($row = mysql_fetch_assoc($result_set)

另外,请使用mysqli。它与命令中的mysqli而不是mysql基本相同。有关详细信息,请参阅此处的文档:http://php.net/manual/en/book.mysqli.php