php - sql case 查询时参数编号无效错误

标签 php mysql sql search pdo

我正在尝试创建带有大小写的搜索查询,但遇到了“无效参数号”错误。有人可以帮助我解决问题所在以及如何解决它吗?

$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 个不同的参数,即使它们具有相同的值,然后看看会发生什么。

已报告相同问题here

关于php - sql case 查询时参数编号无效错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51650789/

相关文章:

mysql - 合并两个单独的 mysql 查询

php - PHP中如何合并两个对象

PHP:不明确的函数名称

php - Mysql select - 获取时间戳的日期

sql - 映射两个没有关系且没有循环的表

SQL - 选择一个字段中具有来自另一字段的最高记录的不同记录

php - 返回播放列表缩略图错误的YouTube脚本?

php - 设置 session 以抓取页面

php - 无论输入复选框数组中的值 =""(是否为空)均已检查

mysql - 如何通过 LEFT JOIN 添加多个表并计算每个表的行数?