Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php从mySql数据库检索哈希密码?_Php_Mysql - Fatal编程技术网

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

如何使用php从mySql数据库检索哈希密码?,php,mysql,Php,Mysql,我的问题应该很简单!虽然,我找不到正确的答案 我需要用php从mySql数据库中检索给定用户名的哈希密码,然后我需要将其存储在一个变量中,我该怎么做 我得到的是资源id 5 这是我的代码: $query = "SELECT hashed_password "; $query .= "FROM users "; $query .= "WHERE username = '{$username}' "; $query .= "AND hashed_password = '{$hashed_passwo

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

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

我得到的是资源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>';

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

只需通过mysql\u fetch\u assoc$result\u set传递即可。它将以一种良好且有序的方式返回您的数据,每次调用都向前移动一行。 意思是你能做到 而$row=mysql\u fetch\u assoc$result\u set


另外,请使用mysqli。在命令中使用mysqli而不是mysql基本上是一样的。有关更多信息,请参阅此处的文档:

首先,让我们使用支持预处理语句的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文档以了解更多示例=]


注意:我强烈建议避免使用mysql_查询和家族函数。它们不仅不推荐使用,而且使用起来非常不安全。

$query=SELECT hashed\u password$查询。=来自用户$query.=其中username='{$username}'$查询=限制1;当你运行你已经得到的代码时会发生什么?你有错误吗?它提供了信息吗?但使用MySQL扩展的时间已经过去了:现在快到2016年了,你应该用准备好的语句和绑定变量来切换到MySQLi或PDO,但我从两年前就开始重新开始php编码了@GeoffAtkins我得到了资源id 5原始的mysql库完全支持数据卫生。在这种情况下,他只使用一个参数,mysqli_escape_string就足够了。我得到了错误解析错误:语法错误,意外的“$stmt”@MRAN抱歉,第二行缺少分号;添加它=]@BlackCetha完全支持是一个错误的语句。它为用户提供了单一的清理方法,并且只能清理字符串。如果您使用的值未封装在引号中,则该函数绝对不会保护您。不,这里正确的课程是演示如何使用预先准备好的语句,这是原始库所没有的。MySQLi库也有类似的方法,[MySQLi_real_escape_string]MySQLi_real_escape_string,但是,同样的问题出现了=]@newfurniture谢谢,我还有一个问题!致命错误:在布尔值上调用成员函数bind_param