-2

我无法使用以下内容从我的表中获取数据。

$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']; 
    }
};

谁能看到我哪里出错了?由于不工作,没有任何内容输出到我的浏览器

4

4 回答 4

3

您似乎混淆了插入和选择语法。

您的选择语法应该类似于:

$query = "SELECT * FROM users WHERE email=:email AND password=:password";

除此之外,您应该查看一下 SO 并搜索secure password hashingas md5is not secure。

于 2013-01-20T19:33:47.280 回答
0

您没有使用有效的 SQL 查询。VALUES()仅与UPDATE语句一起使用。

尝试使用语句

SELECT * FROM users WHERE email = :email AND password =:password
于 2013-01-20T19:39:15.290 回答
0
SELECT * FROM users WHERE (email,password) VALUES (:email,:password)

需要是

SELECT * FROM users WHERE email = :email AND password = :password

我还鼓励您在密码中使用 SALT 值来防御彩虹表攻击。

于 2013-01-20T19:44:33.063 回答
-1

正如上述用户所注意到的,问题出在 SQL 查询上。为了捕获和显示 SQL 错误,您应该在以后使用 try catch 语句。

try {
  /*Code to access database with PDO*/
}
catch(PDOException $e) {
  echo $e->getMessage();
}
于 2013-01-20T19:52:59.823 回答