繁体   English   中英

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

[英]How can I use the '%' wildcard with a LIKE statement in PDO SQL?

我已经尝试了一段时间,但没有成功地使我的代码查询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 ,并且总是在将标记参数绑定到其相应变量的行上发生(例如, $query->bindParam("tag_{$key}", '%' . $tag . '%'); )。

有任何想法吗?

只需将bindParam更改为bindValue 这就是错误消息告诉您的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM