如何在PDO SQL中将'%'通配符与LIKE语句一起使用?

时间:2013-08-10 14:43:58

标签: php sql pdo

我已经尝试了一段时间来获取我的代码来查询我的MYSQL数据库中的博客帖子标签,这是不成功的。这是当前形式的代码:

$tags = explode(", ", $filter);
$insert = "";
foreach ($tags as $key => $tag) {
    if ($key === 0) {
        $insert .= "where tags like :tag_{$key}";
    }
    else {
        $insert .= " or tags like :tag_{$key}";
    }
}
$query = $inDatabase->prepare("select * from blog_posts
    {$insert} 
    order by :order");
foreach ($tags as $key => $tag) {
    $query->bindParam("tag_{$key}", '%' . $tag . '%');
}
$query->bindParam(":order", $order);
$query->execute();
return $query->fetch(PDO::FETCH_ASSOC);

我试过了:

  • $query->bindParam("tag_{$key}", "%$tag%");
  • $insert .= "where tags like '%' || :tag{$key} || '%'
  • $insert .= "where tags like %?%"; [...] $query->bindParam($key, $tag);

但是一切都没有运气,我不断收到这个错误:不能通过引用传递参数2 ,并且总是在标记参数绑定到相应变量的行上的ocurrs(例如,{{ 1}})。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

只需将bindParam更改为bindValue即可。这是告诉你的错误信息。