【发布时间】:2018-01-17 17:31:26
【问题描述】:
由于我与外部数据库建立连接,我需要一种方法,仅在必要时(如果有查询)完成与数据库的连接。
我在 StackOverflow 上找到了这个答案:Auto connecting to PDO only if needed
很完美,我采用这种方法。我认为这是一种干净的方式。但问题来了:
我几乎总是在查询中使用准备好的语句,例如:
$sth = $dbh->prepare("SELECT username FROM users WHERE username = :username");
$sth->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
$sth->execute();
但是将准备好的语句与上述答案的类一起使用它给了我:
警告:PDO::prepare(): SQLSTATE[00000]: 无错误:未调用 PDO 构造函数
致命错误:在 null 上调用成员函数 bindParam()
所以我在课堂上添加了:
public function prepare($query)
{
$this->checkConnection();
return parent::prepare($query);
}
而且它有效。但它总是给我这个警告:
严格标准:DB::prepare() 的声明应与class_pdo.php 中第0 行的PDO::prepare($statement, $options = NULL) 兼容
有人知道为什么吗?
谢谢。
【问题讨论】: