SQL绑定值没有发送任何东西


sql bind value not sending anything

为什么这个工作我已经尝试了几天了,现在从这里得到答案。

我尝试将密码硬编码到语句中,但是当我使用密码变量时,它什么也不返回。

我也有echo和print到处看看变量是什么,他们是正确的,因为在password确实返回pw字符串password

<?php
    include_once "db.php";
        $username = $_POST['user']; 
        $password = $_POST['pass'];
    echo "Username: "; 
    echo $username;
    echo "<br>";
    echo "Password: ";echo $password;
    echo "<br>";
    function GetPassword() {
        $db = getDataBase();
        $stmt = $db->prepare('SELECT username,password FROM userinfo WHERE username = :user AND password = :pass');
        $stmt->bindParam(':user',$username, PDO::PARAM_STR);
        $stmt->bindParam(':pass', $password, PDO::PARAM_STR);
        $stmt->execute();
        $results = $stmt->fetch(PDO::FETCH_ASSOC);
        foreach( $results as $row ){
          print_r( $row );
        }
        return $results;
    }
    $realpw = GetPassword();
    if($password ==  $realpw[0])
    {
        echo "Logged in";
        json_encode($usernameInput);
        echo $realpw[0];
    }else
    {
        echo "invalid username or password";
    }
    ?>

$username和$password不在您的函数范围内。您需要将它们作为参数添加以使其工作:

function GetPassword($username, $password) {
    $db = getDataBase();
    $stmt = $db->prepare('SELECT username,password FROM userinfo WHERE username = :user AND password = :pass');
    $stmt->bindParam(':user',$username, PDO::PARAM_STR);
    $stmt->bindParam(':pass', $password, PDO::PARAM_STR);
    $stmt->execute();
    $results = $stmt->fetch(PDO::FETCH_ASSOC);
    foreach( $results as $row ){
      print_r( $row );
    }
    return $results;
}
$realpw = GetPassword($username, $password);

是指:http://php.net/manual/en/language.variables.scope.php