Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
展开php pdo以支持impala,但setAttribute()函数失败_Php_Pdo_Impala - Fatal编程技术网

展开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

展开php pdo以支持impala,但setAttribute()函数失败。 我的代码是:

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,很抱歉我忘记复制原始代码,我粘贴了修改后的代码。我有一个错误语句,但错误消息总是一样的。你有其他建议吗?谢谢