PHP PDO SQLite准备了语句问题

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)