为什么这个工作我已经尝试了几天了,现在从这里得到答案。
我尝试将密码硬编码到语句中,但是当我使用密码变量时,它什么也不返回。
我也有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