Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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,如果我运行这个查询 "SELECT * FROM users"; 它返回我的结果。但只要我运行这个 $username = $_POST['username']; $password = $_POST['password']; $login = "SELECT * FROM users WHERE name= ".$username." AND password= ".$password.""; 没有 如果我在Mysql workbench中运行它,而不使用它工作的变量。如果我运行ech

如果我运行这个查询

"SELECT * FROM users"; 
它返回我的结果。但只要我运行这个

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

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

如果我在Mysql workbench中运行它,而不使用它工作的变量。如果我运行echo$\u POST值,它们将正确通过。 我被难住了,我做错了什么请!!帮助我。 我也运行了我的代码,它看不到我的代码中有任何错误。 这是全部功能

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;
        }
}
函数登录($username,$password){
全球$db_conn;
$conn=newmysqli($db_-conn['servername']、$db_-conn['username']、$db_-conn['password']、$db_-conn['dbname']);
$username=$_POST['username'];
$password=$_POST['password'];
$login=“从用户名=“.$username.”和密码=“.$password.”的用户中选择*;
$login\u result=$conn->query($login);
如果($login\u result->num\u rows>0){
$output=array();
而($row=$login\u result->fetch\u assoc()){
$output[]=$row;
回显“$row['name']”-“$row['password']”。
”; } }否则{ 回显“Invaild登录详细信息!”“
”; $conn->close(); 返回false; } }
每次它都会说“无效的登录详细信息!”但我知道它们是返回的一个结果


我做错了什么?

像这样更改查询

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

注意:此方法容易受到sql注入攻击。尝试使用预先准备好的语句来避免它

您可以简单地指定变量,而无需在php中使用字符串附加来构造查询

例如:

尝试使用
''(单引号)
比较
名称和密码

"SELECT * FROM users WHERE name= '".$username."' AND password= '".$password."'";
尝试以下代码

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

$login=“从name=
“$username.”“和password=
“$password.”的用户中选择*;为变量添加一个单引号怎么样?让我现在快速尝试:D现在将返回到您的顶部;返回?pw是否包含特定于sql的字符?请注意,这些sql查询是,您应该使用prepared语句。这是为什么导致它不回显的原因?最好添加一个简短的解释,说明您的代码的功能。此查询有什么问题此查询没有任何问题。也许他不知道如何用正确的php语法编写代码。
$login = "SELECT * FROM users WHERE name= '".$username."' AND password= '".$password."'";