Mysql Query没有返回我的结果

时间:2017-10-24 09:05:44

标签: php mysql

如果我使用查询

运行它
"SELECT * FROM users"; 

它返回我的结果。但是一旦我运行这个

$username = $_POST['username'];
$password = $_POST['password'];

$login = "SELECT * FROM users WHERE name= ".$username." AND password= ".$password."";

它没有。

如果我在没有变量的情况下在Mysql工作台中运行它。如果我运行echo $ _POST值,它们会正确通过。 我很难过,我做错了请P !!帮我。 我还通过https://phpcodechecker.com/运行了我的代码,它无法在我的代码中看到任何错误。 这是完整的功能。

function login($username,$password){
global $db_conn;
$conn = new mysqli($db_conn['servername'], $db_conn['username'], $db_conn['password'], $db_conn['dbname']);
$username = $_POST['username'];
$password = $_POST['password'];

$login = "SELECT * FROM users WHERE name= ".$username." AND password= ".$password."";
    $login_result = $conn->query($login);

    if ($login_result->num_rows > 0) {

        $output = array();
        while($row = $login_result->fetch_assoc()) {
            $output[] = $row;
            echo "".$row['name']."-".$row['password']."<br>";
        }
        } else {
            echo "Invaild Login Details!"."<br>" ;
            $conn->close();
            return false;
        }
}

每次出现&#34;无效的登录详情!&#34;但我知道他们的结果会被归还。

我做错了什么?

5 个答案:

答案 0 :(得分:2)

像这样更改查询

$login = "SELECT * FROM users WHERE name= '$username' AND password= '$password'";
注意:这种方法很容易受到sql注入攻击。尝试准备好的陈述以避免它

答案 1 :(得分:0)

尝试使用''(single quote)进行比较name and password

"SELECT * FROM users WHERE name= '".$username."' AND password= '".$password."'";

答案 2 :(得分:-1)

$login = "SELECT * FROM users WHERE name = '{$username}' AND password = 
'{$password}' ";

答案 3 :(得分:-1)

你可以简单地指定变量,不需要去字符串追加来构造php中的查询

例如:

Query = "SELECT * FROM `users` where username = '$username' AND  password = '$password' " ;

答案 4 :(得分:-1)

尝试以下代码

$login = "SELECT * FROM users WHERE name= '".$username."' AND password= '".$password."'";