PHP PDO SQLite 准备语句问题

标签 php database sqlite pdo prepared-statement

我正在尝试将一个 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/

相关文章:

php - fetch_object 返回空白而不是头像?

java - 在 SQLCipher 中设置密码

c# - Lat 和 Long 最近的空间位置

c# - 内存中的 EF Core SQLite 异常 : SQLite Error 1: 'near "MAX": syntax error'

php - Opencart如何测试模块是否安装?

php - 无法加载 curl.so lib(entware)

php - Codeigniter 不正确的 CAPTCHA 图像 src

database - Meteor - 如何将 html 元素链接到点击事件的数据库条目?

android - SQLite 和数据库初始化

android - 即使在应用程序卸载后也存储应用程序数据