从类函数返回的变量产生错误“调用未定义的方法PDOStatement :: bind()”

时间:2014-04-07 16:00:55

标签: php mysql cakephp pdo

我有一个类dbConnect

class dbConnect
{
    private $dbh;

    public function getConnection() 
    {
        $dbhost=DB_HOST;
        $dbuser=DB_USERNAME;
        $dbpass=DB_PASSWORD;
        $dbname=DB_NAME;
        $this->dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $this->dbh;
    }
}

调用功能

function returnValidClientId($userClient)
{
        $sql_query = "SELECT clientName from ValidClients where clientId=:userClient";//Line 1

        $db_connect_var = new dbConnect;//Line 2

        $dbh = $db_connect_var->getConnection();//Line 3

        $stmt = $dbh->prepare($sql_query);//Line 4

        $stmt -> bind("userClient",$userClient);//Line 5

        $stmt -> execute();//Line 6

        $clients= $stmt->fetchObjects();//Line 7
}

在使用函数returnValidClientId中的类dbConnect时,我在第4行中收到错误“调用未定义的方法PDOStatement :: bind()”

但是如果我在没有任何类实现的情况下编写函数getConnection,上面的代码工作正常..

有人可以解释我哪里出错吗?

2 个答案:

答案 0 :(得分:3)

PDO语句中没有bind()方法:http://php.net/manual/en/class.pdostatement.php

bindParam()

答案 1 :(得分:2)

你永远不应该使用像这样的类

您在每种方法中都与数据库建立连接。它肯定会杀死你的服务器。

要么传递一个原始PDO语句,要么创建一个单例,如果你想要一个属于你自己的类

如果returnValidClientId是一个类方法,那么创建一个原始PDO实例,然后在类构造函数中传递它,分配给一个类变量并在方法中一直使用后者。