PDO и PDOStatement, магические задания

0

У меня есть следующий "тестовый класс", сделанный "на лету": http://sumoin.pastebin.com/ff744ea4 Нет тонкой настройки или чего-то еще, всего лишь короткого тестирования класса pdo.

И у меня есть test.php: http://sumoin.pastebin.com/d70dcb4ec

Самое смешное:

Объект PDOStatement никогда не возвращается напрямую, и мне никогда не присваивается $this->handler->stmt

но выполнение $stmt->execute() работает так же хорошо, как если бы все было okey. Но если я использую $this->handler->stmt->someMethod, я получаю следующую ошибку:

Неустранимая ошибка: вызов функции-члена bindParam() для не-объекта

(bindParam - всего лишь пример)

Я уже проверил запрос, и в нем нет ошибок, я пытался использовать "bindValue()", не работал. Я пытался использовать целые числа вместо ": name" для назначения значений параметрам. Я выполнил чистый запрос через $this->handler->query(), и он сработал.

Где находится проблема? Я не хочу назначать свой объект PDOStatement во время выполнения, я хочу, чтобы он был частью класса, когда вызывается метод "- > prepare()".

Любые идеи? Пожалуйста, не ударяйте меня, если есть дубликат, но я не нашел ничего, что помогло мне.

информация:

  • PHP5.2
  • Расширения PDO и т.д.
  • Apache2
  • MySQL5.1 (соответствует версии PDO)
  • 0
    ОБНОВЛЕНИЕ: я попытался использовать ссылку '$ this-> stmt = & $ this-> handler-> prepare ()'. Все еще вызывает ту же ошибку.
Теги:
pdo

1 ответ

0
Лучший ответ

Обход/Решение:

public function prepare($query)
{
    return $this->handler->prepare($query);

    //$stmt->setFetchMode(PDO::FETCH_ASSOC); // standard
    //return $this->stmt;
}

public function getStatement($query)
{
    $this->stmt = $this->prepare($query);
}
  • 0
    Это работает, однако, я не знаю почему, но после мозгового штурма, сидя на унитазе / туалете, я получил эту идею;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню