dbo*_*ski 4 php database sqlite pdo prepared-statement
我正在尝试将PHP应用程序从MySQL迁移到SQLite,以及过去常常工作的一些东西,现在就停止工作了.我通过自定义数据库包装类使用PDO(该类是单例,似乎合乎逻辑地这样做).
问题:当尝试在预准备语句上执行查询时,它会抛出"致命错误:在非对象上调用成员函数execute()......".
相关代码(在var_dumps和try-catch几个小时后缩小到这个范围):
连接字符串:
$this->connection = new PDO("sqlite:"._ROOT."/Storage/_sqlite/satori.sdb");
Run Code Online (Sandbox Code Playgroud)
显然,这里的$ connection变量是类中的私有变量.
这里发生错误(在应该执行数据库插入的函数内):
try{
$statement = self::getInstance()->connection->prepare($sql);
}catch (PDOException $e){
print $e->getMessage;
}
try{
var_dump($statement);
$statement->execute($input);
}catch (Exception $e){
print $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
更准确地说,当我尝试$ statement-> execute($ input)时会发生这种情况.
任何帮助赞赏.谢谢.
Pek*_*ica 10
在准备语句时,您可能会收到mySQL错误,但是您没有配置PDO以在发生错误时抛出异常.
<?php
$dbh = new PDO( /* your connection string */ );
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// . . .
?>
Run Code Online (Sandbox Code Playgroud)