展开php pdo以支持impala,但setAttribute()函数失败
展开php pdo以支持impala,但setAttribute()函数失败。 我的代码是:展开php pdo以支持impala,但setAttribute()函数失败,php,pdo,impala,Php,Pdo,Impala,展开php pdo以支持impala,但setAttribute()函数失败。 我的代码是: class ImpalaPDO extends PDO { public function __construct($dsn, $username, $passwd, $options) { parent::__construct($dsn, $username, $passwd, $options); $impala = new ImpalaPDOSt
class ImpalaPDO extends PDO {
public function __construct($dsn, $username, $passwd, $options)
{
parent::__construct($dsn, $username, $passwd, $options);
$impala = new ImpalaPDOStatement();
$impala->test();
$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('ImpalaPDOStatement', array($this)));
}
}
class ImpalaPDOStatement extends PDOStatement {
public function test() {
print "aaa";
}
}
错误消息是:
SQLSTATE[HY000]:一般错误:PDO::ATTR_语句_类需要格式数组(类名,数组(ctor_args));类名必须是指定现有类的字符串。
我可以确认的是ImpalaPDOStatement存在,因为$impala->test()成功打印字符串。所以我不知道错误消息是什么意思。您必须重写
PDOStatement
的受保护构造函数:
class ImpalaPDOStatement extends PDOStatement {
public $dbh;
// Constructor must be overrided
protected function __construct($dbh) {
$this->dbh = $dbh;
}
public function test() {
print "aaa";
}
}
您的
ImpalaPDOStatement
应该首先扩展PDOStatement
。完成后,请重试并调试任何进一步的问题。@Mjh,很抱歉我忘记复制原始代码,我粘贴了修改后的代码。我有一个错误语句,但错误消息总是一样的。你有其他建议吗?谢谢