Проблема возникает, когда у вас есть $root <= 0
.В этом случае ваш оператор SQL содержит только один токен (:url
), а вы связываете две переменные (:url
и :type
).
Необходимо установить границупараметры условно:
$select = $this->select()
->from($this->_name, array('count(*) as cnt'))
->where("LOWER(catalog_url) LIKE :url ");
$params = array(':url' => $url);
if ($root > 0) {
$select->where("`type` = :type");
$params[':type'] = $root;
}
return $this->getAdapter()->fetchOne($select, $params);
РЕДАКТИРОВАТЬ: Я упустил что-то очень важное.Переменные должны быть связаны с тем же маркером, который определен в операторе SQL.Это означает, что вы должны использовать :url
и :type
для связанных переменных (не url
и type
).