У меня есть класс PHP следующим образом:
class SearchAttributeDao extends BaseDao { private $SELECT_CATEGORY_FILTER_BY_IDS; function __construct() { $this->table_name = 'categoryattributes'; $this->SELECT_CATEGORY_ATTR_BY_IDS = "SELECT csa.attributeid, atn.name FROM " .$this->table_name. " csa join attributenames atn on csa.attributeid = atn.attributeid where csa.categoryid in (?); "; } public function getListByCatIds(array $catIds) { //... $attr_list = $this->executeSelectQuery($this->SELECT_CATEGORY_FILTER_BY_IDS, [$catIds]); //Error on this line //... } }
Поэтому, когда я выполняю свое приложение, я получаю сообщение об ошибке:
SQLSTATE [42000]: ошибка синтаксиса или нарушение доступа: 1065 Запрос был пуст (SQL:) … в BaseDao-> executeSelectQuery (null, array (array ('10523', '10524', '10606', '10423', '10533', '10618'))) в строке SearchAttributeDao.php 24
Вышеуказанная stacktrace предполагает, что SELECT_CATEGORY_FILTER_BY_IDS
имеет значение null или пусто, но я установил его в конструкторе. Что я сделал не так?
Вы звоните:
$this->executeSelectQuery($this->SELECT_CATEGORY_FILTER_BY_IDS..
но вы определили:
$this->SELECT_CATEGORY_ATTR_BY_IDS = "SELECT csa.attributeid,...
Попробуйте исправить имена и повторите попытку.