У меня есть следующий "тестовый класс", сделанный "на лету": 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)
Обход/Решение:
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);
}