Я пишу класс, содержащий массив других объектов, которые он генерирует, запрашивая базу данных. Каждый экземпляр этого класса выполняет почти идентичный запрос, поэтому я решил настроить общий обработчик инструкций, и каждый класс просто привязал к нему другую переменную. Вот фрагмент кода:Реализация общей подготовленной инструкции SQL в PHP
class CQuestion
{
// this is line 16
static private $sthAns = SPDO::prepare(
'SELECT * FROM answers WHERE answers.q_id = :qid'
);
// constructor, other functions, etc.
private function GetAnswers()
{
self::$sthAns->bindParam(':qid', $this->m_iQID, PDO::PARAM_INT);
self::$sthAns->execute();
}
}
Я знаю, что это не работает, потому что я получаю следующее сообщение об ошибке:
Анализировать ошибка: синтаксическая ошибка, неожиданный «(», ожидая «» или „;“ в C: \ XAMPP \ HTDOCS \ mbtest \ CQuestion.php на линии 16
кто-нибудь знает способ осуществить это без необходимости сброса подготовленного заявления для каждого экземпляра класса
Incase есть какой-либо путаница Я обернул PDO в моем собственном синглтоне (SPDO), который устанавливает файл ini. Вот почему я обращаюсь к подготовке через статическую ссылку.
Что такое линия 16? Это похоже на обычную синтаксическую ошибку. Хотя я не уверен, что вы можете получить доступ к заявлению статически, чтобы это могло быть другой проблемой. – Cfreak
Извините, что забыл про это. Я добавил примечание о строке 16. Я уверен, что строка 16 является синтаксической ошибкой, поэтому мой вопрос: как мне это сделать? – Krustal