我如何使用PDO结果?

时间:2012-11-27 02:02:46

标签: php pdo

大家好,我正在尝试为我的网站做一个登录方法,而且我遇到了一个小问题。我从PDO连接获取数据但每次检查密码时都返回false。我的变量是错的? 这是我的SQL查询

$this->result = $this->sql->prepare('SELECT username,password FROM User WHERE username=:username AND password=:password');
$this->result->bindParam(':username',   $username,  PDO::PARAM_STR); 
$this->result->bindParam(':password',   $password,  PDO::PARAM_STR); 
$this->result->execute(); 

这是我的if语句:

$this->result=$this->result->fetch(PDO::FETCH_OBJ);
if (($password == $this->result->password) && ($username == $this->result->username)){

我没有得到错误它只是总是假的。我不是在加密密码,所以不是这个问题。我认为$ this-> result->密码就是问题所在。有人能纠正我吗?

谢谢

2 个答案:

答案 0 :(得分:2)

你也可以使用它:

$username=$_GET['username'];$password = $_GET['password'];/*of $_POST, depending of which you used*/
$this->result = $this->sql->prepare('SELECT username,password FROM User WHERE username='$username' AND password='$password');

$这 - > result->执行();

然后像这样使用fetchAll

$this->results = $this->result->fetchAll(PDO::FETCH_ASSOC);
if($this->results['username']==$this->username && $this->results['password']==$this->password){/*u had beed loged in*/}

答案 1 :(得分:0)

你的逻辑应该有效。最有可能的是,SQL没有返回任何内容。尝试打印出获取结果。

$this->result=$this->result->fetch(PDO::FETCH_OBJ);
print_r($this->result);

此外,如果要在SQL查询中检查用户名和密码,则不必在if语句中再次检查它。使用您正在使用的SQL语句,您应该能够检查它是否返回一行以验证用户。

$numrows = $this->result->rowCount();
if ($numrows == 1) {
  // User is valid
}
else {
  // User is not valid
}