繁体   English   中英

我如何使用PDO结果?

[英]how i can use the PDO results?

大家好,我正在尝试为我的网站做一个登录方法,我遇到了一个小问题。 我从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->密码就是问题所在。 有人能纠正我吗?

谢谢

你也可以使用它:

$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*/}

你的逻辑应该有效。 最有可能的是,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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM