Php 如何使用';%';PDO SQL中带有LIKE语句的通配符?
我已经尝试了一段时间让我的代码查询我的MYSQL数据库中的博客帖子标签,但没有成功。这是当前形式的代码:Php 如何使用';%';PDO SQL中带有LIKE语句的通配符?,php,sql,pdo,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 t
$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标记,如“%”| |:标记{$key}| |'%”
[…]$insert.=“where标记,如%?%”;
$query->bindParam($key,$tag);
$query->bindParam(“tag{$key},“%”.$tag.%”;
)
有什么想法吗?只需将
bindParam
更改为bindValue
。这就是错误消息告诉您的。当您得到回答问题的答案时,我觉得我还应该添加一条注释,警告您,像这样带有前导通配符的查询可能非常慢。数据库必须读取数据库中的每一条记录查找匹配的表;如果它是一组小数据,那就很好了,但是随着表的增长,查询的速度会下降得很厉害。如果你期望有超过一千条记录,那么你应该考虑寻找一种替代方法来搜索你的数据。