我在使用以下内容从表中获取数据时遇到问题。
$email = $_POST['email'];
$password = md5($_POST['password']);
$query = "SELECT * FROM users WHERE (email,password) VALUES (:email,:password)";
$stmt = $dbh->prepare($query);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':password', $password);
$stmt->execute();
if(!$query){
echo 'Whoops, something went wrong!';
} else {
while($r = $stmt->fetch(PDO::FETCH_LAZY)){
echo $r['surname'];
}
};
任何人都可以看到我出错的地方吗?如果不工作,则不会向我的浏览器输出任何内容
答案 0 :(得分:3)
您似乎混合了插入和选择语法。
您的选择语法应该是:
$query = "SELECT * FROM users WHERE email=:email AND password=:password";
除此之外,您应该浏览SO并搜索secure password hashing
,因为md5
不安全。
答案 1 :(得分:0)
您没有使用有效的SQL查询。 VALUES()
仅用于UPDATE
语句。
尝试使用声明
SELECT * FROM users WHERE email = :email AND password =:password
答案 2 :(得分:0)
SELECT * FROM users WHERE (email,password) VALUES (:email,:password)
需要
SELECT * FROM users WHERE email = :email AND password = :password
我还鼓励您使用密码的SALT值来抵御彩虹表攻击。
答案 3 :(得分:-1)
正如上述用户所注意到的,问题出在SQL查询中。 为了捕获和显示SQL错误,您将来应该使用try catch语句。
try {
/*Code to access database with PDO*/
}
catch(PDOException $e) {
echo $e->getMessage();
}