2015-10-15 62 views
-1

我的问题应该很简单!虽然,我找不到正确的答案!我怎样才能检索mySql数据库与PHP的散列密码?

我需要检索“散列密码”为mySql数据库提供“用户名”与PHP,然后我需要将其存储在一个变量,我怎么能这样做?

我得到的全部是"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

'$ query =“SELECT hashed_pa​​ssword”; $ query。=“FROM users”; $ query。=“WHERE username ='{$ username}'”; $ query。=“LIMIT 1”;' –

+0

当你运行你已经拥有的代码时会发生什么?你有错误吗?它提供的信息? –

+1

但是,使用MySQL扩展已经过去了:现在已经快到2016年了,您应该使用预处理语句切换到MySQLi或PDO并绑定变量 –

回答

0

您需要将数据提取出由查询返回的mysql的资源的。

只需通过mysql_fetch_assoc($result_set)即可。它会以一种漂亮而有序的排列方式返回你的数据,每次打电话都会向前移动一行。 含义你可以做 while ($row = mysql_fetch_assoc($result_set)

此外,请使用mysqli。其基本上与mysqli相同,而不是命令中的mysql。请参阅文档以获取更多信息:http://php.net/manual/en/book.mysqli.php

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; 

退房的PHP文件为mysqli::prepare()更多的例子=]

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

+1

原始的mysql库完全支持数据卫生。在这种情况下,他只使用一个参数,'mysqli_escape_string()'是绝对足够的。 – BlackCetha

+0

我得到错误'解析错误:语法错误,意外'$ stmt'' – MRAN

+0

@MRAN对不起,第二行有一个缺失的分号;添加它=] – newfurniturey

相关问题