使用bindparam的PDOStatement对象[PHP]

时间:2014-05-19 22:40:21

标签: php pdo

我有一个方法可以让我看到用户是否存在:

public function login_user($user_name, $user_password){
    $this->statement = $this->conn->prepare('SELECT * FROM users WHERE user_name=:user_name AND user_password=:user_password');
    $this->statement = $this->conn->bindParam(':user_name', $user_name);
    $this->statement = $this->conn->bindParam(':user_password', $user_password);

    $this->statement->execute();
    return $this->statement->fetch(PDO::FETCH_ASSOC);
}

我之前从未使用过PDO而且我有点困惑。我收到了错误:

Call to undefined method PDO::bindParam()

我已经看到答案说这是因为它是PDOStatement类的一部分。

通过将我的代码更改为此(删除$ this-> conn)修复它:

$this->statement->bindParam(':user_name', $user_name);
$this->statement->bindParam(':user_password', $user_password);

但是,我不明白为什么? $this->conn是PDO对象。我刚才做了什么才能做到这一点?

2 个答案:

答案 0 :(得分:2)

只是做

$this->statement->bindParam()

绑定参数,然后可以调用执行语句

答案 1 :(得分:0)

对您的功能进行以下更改:

public function login_user($user_name, $user_password){

 //prepare the query
 $query='SELECT * FROM users WHERE user_name=:user_name AND user_password=:user_password';
 $statement = $this->conn->prepare($query);

 //bind the parameters
 $statement->bindParam(':user_name', $user_name);
 $statement->bindParam(':user_password', $user_password);

 //excute & fetch the data
 $statement->execute();
 $result = $statement->fetch(PDO::FETCH_ASSOC);

 return $result;
}