Я пытаюсь создать поисковый запрос с case, и я застрял на ошибке "Недопустимый номер параметра". Может ли кто-нибудь помочь мне с тем, что может быть проблемой, и как я могу это исправить?
$query = 'SELECT *,
CASE WHEN o.title LIKE :keyword THEN 1
WHEN c.body LIKE :keyword THEN 2
ELSE 99 END AS priority
FROM orders AS o INNER JOIN
comment_relations AS cr ON o.id = cr.target_id INNER JOIN
comments AS c ON cr.comment_id = c.id
WHERE cr.type = 2
ORDER BY priority';
$stmt = $db->prepare($query);
$stmt->bindValue(':keyword', '%' . $search_keyword . '%', PDO::PARAM_STR);
Таблицы выглядят так:
ORDER:
ID = 95
title = first order
COMMENT RELATIONS:
id = 1241
comment_id = 500
target_id = 95
type = 2
COMMENT:
id = 500
body = this is the first comment
Я думаю, проблема связана с использованием одного и того же параметра дважды. Если у вас есть 2 параметра, вам нужно указать 2 параметра.
Вы должны попытаться написать 2 разных параметра, даже если они имеют одинаковое значение и посмотреть, что произойдет.
О той же проблеме сообщалось здесь
$stmt->bindValue(':keyword', '"%' . $search_keyword . '%"', PDO::PARAM_STR);
~ Обратите внимание на"