Ошибка неверного номера параметра в запросе sql case

0

Я пытаюсь создать поисковый запрос с 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
  • 0
    Есть ли ошибка, если вы попробуете запрос с "жестко закодированными ключевыми словами"? Просто для тестирования запроса.
  • 0
    просто мысль, возможно, цитирующая переменную вот так? $stmt->bindValue(':keyword', '"%' . $search_keyword . '%"', PDO::PARAM_STR); ~ Обратите внимание на "
Теги:
search
pdo

1 ответ

2
Лучший ответ

Я думаю, проблема связана с использованием одного и того же параметра дважды. Если у вас есть 2 параметра, вам нужно указать 2 параметра.

Вы должны попытаться написать 2 разных параметра, даже если они имеют одинаковое значение и посмотреть, что произойдет.

О той же проблеме сообщалось здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню