我的问题应该很简单!虽然,我找不到正确的答案!
我需要使用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>';
答案 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