Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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语句以使用默认的FETCH_类。类名称应为字符串_Php_Pdo_Pdostatement - Fatal编程技术网

Php 扩展PDO语句以使用默认的FETCH_类。类名称应为字符串

Php 扩展PDO语句以使用默认的FETCH_类。类名称应为字符串,php,pdo,pdostatement,Php,Pdo,Pdostatement,我一直在玩弄PDO,试图为结果创建一个默认的返回类,并将其作为一般的默认行为 这让我发现我需要扩展PDOStatement,以便它在实例化时设置默认类 代码中没有明显的错误 在DB包装器中创建PDO实例时,我将DB句柄设置为使用扩展语句类,并将类名作为results类的参数传递。我通常会使用stdClass,但实际上,我创建了一个扩展ArrayObject的简单类 $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_CLA

我一直在玩弄PDO,试图为结果创建一个默认的返回类,并将其作为一般的默认行为

这让我发现我需要扩展
PDOStatement
,以便它在实例化时设置默认类

代码中没有明显的错误

在DB包装器中创建PDO实例时,我将DB句柄设置为使用扩展语句类,并将类名作为results类的参数传递。我通常会使用stdClass,但实际上,我创建了一个扩展
ArrayObject
的简单类

$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_CLASS);
$pdo->setAttribute(
    PDO::ATTR_STATEMENT_CLASS,
    array(
        'DatabaseStatement',
         array('DatabaseRow')
    )
);
这一切看起来似乎都不错,但我得到了以下错误:

SQLSTATE[HY000]:一般错误:类名无效(应为字符串)

这不是最好的错误消息,也没有提供关于错误发生的内容或位置的任何信息,但我相信这是由于上面的部分,因为一旦我删除该部分,它就不再发出错误

希望有人能给我一个前进的方向,因为我已经在谷歌上搜索了一段时间,但是,唉,没有用

提前感谢您,如果我提供的信息不够,请随时询问更多信息:

叹气

我已经解决了这个问题。我的一个函数将扩展PDOStatement类中的一个方法中的参数覆盖为
null
,从而导致替换我的自定义行类。哎呀

这是一件很容易错过的事情。当你离开一个项目很短一段时间后又回到项目中时,你会注意到令人惊讶的事情!哈哈哈。。。。啊,不好意思。

叹气

我已经解决了这个问题。我的一个函数将扩展PDOStatement类中的一个方法中的参数覆盖为
null
,从而导致替换我的自定义行类。哎呀

这是一件很容易错过的事情。当你离开一个项目很短一段时间后又回到项目中时,你会注意到令人惊讶的事情!哈哈哈。。。。啊,不好意思