Php 为什么这个查询返回“quot&引用;

Php 为什么这个查询返回“quot&引用;,php,Php,登录表如下所示: $servername = "localhost"; $username = "user"; $password = "password"; $connection = mysql_connect($servername, $username, $password); if (!$connection){ die("Connection failed: " .mysqli_connect_error()); } $connected_db = mysql_sele

登录表如下所示:

$servername = "localhost";
$username = "user";
$password = "password";

$connection = mysql_connect($servername, $username, $password);

if (!$connection){
    die("Connection failed: " .mysqli_connect_error());
}

$connected_db = mysql_select_db('users', $connection);
if (!$connected_db){
    die('Can\'t use user database: ' . mysql_error());
}
$result = mysql_query("SELECT pw FROM login WHERE name=\"" . $_POST['username'] . "\"");
显然,
^
不是一个查询,只是一个表组成的摘要
最后的查询
($result=mysql\u query(“SELECT pw FROM login WHERE name…”)
发现用户名很好,密码使用
密码散列(password,DEFAULT\u password)
散列并存储在数据库中。但是
$result['pw']
返回一个空字符串。为什么?我试图从数据库中检索存储的哈希值以进行登录,以便与使用登录表单的POST数据验证的密码进行比较。查询
从登录名中选择pw,其中name=testuser;
phpmyadmin
中工作正常。首先,在开发模式下,将其添加到页面顶部u php脚本:

id int(4)
name char(16)
pw char(64)
这将允许您检查脚本上的错误

关于你的代码,你很容易受到攻击 要避免这种情况,请使用
php
函数。 而且,你的双引号放错地方了。 您的代码可能如下所示:

error_reporting(E_ALL);
ini_set('display_errors', '1');

sql喜欢单引号中的值,请尝试$result=mysql_query(“从登录名中选择pw,其中name=””、$\u POST['username'].“””);谢谢,我意识到了注入漏洞。这是我未婚夫的一个小型个人项目,所以注入现在不是什么大问题,尽管我意识到了注入的危险。
$username = mysql_real_escape_string($_POST['username']);
$result = mysql_query("SELECT pw FROM login WHERE name='$username'");