我正在尝试将一个 PHP 应用程序从 MySQL 迁移到 SQLite,一些曾经可以工作的东西现在就停止工作了。我通过自定义数据库包装器类使用 PDO(该类是单例,这样做似乎合乎逻辑)。
问题: 当尝试对准备好的语句执行查询时,它会抛出“ fatal error :调用非对象上的成员函数 execute() ...”。
相关代码(经过几个小时的 var_dumps 和 try-catch 后,将其缩小到此):
连接字符串:
$this->connection = new PDO("sqlite:"._ROOT."/Storage/_sqlite/satori.sdb");
显然,这里的 $connection 变量是类中的私有(private)变量。
错误发生在这里(在应该执行数据库插入的函数内):
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();
}
更准确地说,它发生在我尝试 $statement->execute($input) 时。
感谢任何帮助。谢谢。
最佳答案
您可能在准备语句时收到 mySQL 错误,但您没有将 PDO 配置为 throw an exception in case of an error .
<?php
$dbh = new PDO( /* your connection string */ );
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// . . .
?>
关于PHP PDO SQLite 准备语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4584788/