我有一个类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,上面的代码工作正常..
有人可以解释我哪里出错吗?
答案 0 :(得分:3)
PDO语句中没有bind()
方法:http://php.net/manual/en/class.pdostatement.php
有bindParam()
。
答案 1 :(得分:2)
您在每种方法中都与数据库建立连接。它肯定会杀死你的服务器。
要么传递一个原始PDO语句,要么创建一个单例,如果你想要一个属于你自己的类
如果returnValidClientId是一个类方法,那么创建一个原始PDO实例,然后在类构造函数中传递它,分配给一个类变量并在方法中一直使用后者。