не могу понять в чем ошибка, в то время как количество параметров верное, и написаны они верно! запрос:
$prepare = $this->dbPDO->prepare('SELECT category.id, category.parent_id, category_description.title FROM tori_category, tori_category_description WHERE `tori_category_description.category_id` = :tori_category_description.category_id AND `tori_category_description.lang_id` = :tori_category_description.lang_id ORDER BY `title` DESC ');
данные
$prepare->execute(Array
(
[tori_category_description.category_id] => tori_category.id
[tori_category_description.lang_id] => 1
))
выдает ошибку Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in
Именованный параметр PDO может использовать только символы [a-zA-Z0-9_], точка недопустима и парсер воспринимает не тот результат, на который вы рассчитываете. В мануале это похоже не описано, но вот оно в исходнике.
Парсер считает, что ваш :tori_category_description.category_id - это параметр :tori_category_description, а следом без разделителя кусок запроса .category_id. Для mysql это недопустимо синтаксически, но это не ответственность парсера pdo, потому что например для postgresql это может быть нормальным оператором, выполняющим какую-то логику между переданным параметром :tori_category_description и полем category_id с помощью определённого для них оператора ..
Но параметр :tori_category_description вы не биндите, поэтому PDO жалуется на несоответствие параметров в запросе и в execute.
Вы забыли к ключам массива добавить ":" т.е. массив переданный в execute должен быть таким
Array
(
':tori_category_description.category_id' => tori_category.id
':tori_category_description.lang_id' => 1
)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости