PHP PDO SQLite подготовил заявление о проблемах - PullRequest
4 голосов
/ 03 января 2011

Я пытаюсь перенести приложение PHP с MySQL на SQLite, и некоторые вещи, которые раньше работали, просто перестали работать.Я использую PDO через пользовательский класс-обертку базы данных (класс одноэлементный, кажется логичным сделать это так).

Проблема: при попытке выполнить запрос к подготовленному оператору выдается «фатальная ошибка: вызов функции-члена execute () для необъекта ...».

Соответствующий код (суженный до этого после нескольких часов var_dumps и try-catch):

Строка подключения:

$this->connection = new PDO("sqlite:"._ROOT."/Storage/_sqlite/satori.sdb");

Очевидно, что переменная $ 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();
    }

Точнее, это происходит, когда я пытаюсь $ Statement-> Выполнить($ input).

Любая помощь приветствуется.Спасибо.

Ответы [ 2 ]

10 голосов
/ 03 января 2011

Возможно, вы получаете ошибку mySQL при подготовке оператора, но у вас нет PDO, настроенного на , выдающего исключение в случае ошибки .

<?php

  $dbh = new PDO( /* your connection string */ );
  $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  // . . .
?>
2 голосов
/ 03 января 2011

попробуйте объявить переменную $ Statement вне первого блока try. например,

$statement = null;

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();
    }
...