小编Mik*_*nes的帖子

使用PDO准备好的语句从搜索字段中使用多个关键字进行LIKE查询

站点用户使用搜索表单来查询产品数据库。输入的关键字在数据库中搜索产品的标题。

    public function startSearch($keywords){
        $keywords = preg_split('/[\s]+/', $keywords);
        $totalKeywords = count($keywords);

        foreach($keywords as $key => $keyword){
            $search .= '%'.$keyword.'%';
            if($key != ($totalKeywords)-1){
                $search .= ' AND itemTitle LIKE ';
            }
        }
$sql=$this->db->prepare("SELECT * FROM prodsTable WHERE itemTitle LIKE ?");
$sql->bindParam(1, $search);        
$sql->execute ();
$sql->fetchALL(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

如果用户输入单个关键字,则搜索有效,但是如果使用多个关键字,则查询不会执行。

如果:$ keywords ='apple ipod'; $ search ='%apple%AND itemTitle Like%ipod%';

因此,准备好的语句应如下所示:

“从prodsTable中选择*,其中itemTitle喜欢%apple%和itemTitle喜欢%ipod%”

当两个产品的标题中同时包含“ apple”和“ ipod”时,没有结果返回。

我究竟做错了什么?

php pdo sql-like

0
推荐指数
1
解决办法
4094
查看次数

标签 统计

pdo ×1

php ×1

sql-like ×1