сложный запрос PDO

149
20 марта 2018, 02:26

не могу понять в чем ошибка, в то время как количество параметров верное, и написаны они верно! запрос:

$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

Answer 1

Именованный параметр 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.

Answer 2

Вы забыли к ключам массива добавить ":" т.е. массив переданный в execute должен быть таким

Array
(
':tori_category_description.category_id' => tori_category.id
':tori_category_description.lang_id' => 1
)
READ ALSO
Модальное окно после цикла if

Модальное окно после цикла if

ЗдравствуйтеНа сайте есть форма, находящаяся в модальном окне: поле ввода, заполняемое пользователем и кнопка отправить

157
подстрока в строке PHP?

подстрока в строке PHP?

Есть у меня строка, например "Рога и копыта отзывы"мне необходимо средствами PHP получить из нее строку без слова "отзывы"

134
Принцип создания dashboard

Принцип создания dashboard

Добрый деньИзучаю laravel, пробую сделать простой дашборд, у которого есть несколько страничек с таблицами и графиками

151
Как различать input text?

Как различать input text?

Есть таблица учета товара где есть возможность продать товар в нужном количествеПроблема в том что input type text с одинаковыми классами и именами

131