You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter查询中WHERE等于条件加通配符无法实现LIKE行为

问题分析与解决方案

嘿,我一眼就揪出问题所在啦!你当前的SQL语句里用了AdTitle = ?来匹配文本字符串,但这是精确匹配,根本不会识别你传入的%通配符——这就是加入文本搜索后功能失效的核心原因。要实现模糊搜索,必须把=换成LIKE关键字才行!

修改后的代码

public function search($textstring, $category, $college, $limit, $offset) { 
    // 关键修改:把AdTitle = ? 替换为 AdTitle LIKE ?
    $sql = "SELECT * FROM ads WHERE Category = ? AND College_id = ? AND AdTitle LIKE ?"; 
    $query = $this->db->limit($limit, $offset)->query($sql, array($category, $college, '%' . $textstring . '%')); 
    
    // 可以加这句打印最终执行的SQL,方便调试验证
    echo $this->db->last_query();
    
    echo "<pre>"; 
    print_r($query); 
    print_r($textstring); 
    echo "</pre>"; 
    return $query->result_array(); 
}

为什么之前部分功能正常?

仅搜索学院和分类时,你用的是精确匹配(Category = ?和College_id = ?),这和业务需求完全匹配,所以能正常返回结果;但文本搜索需要模糊匹配,=符号只会严格对比字符串内容,不会把%当作通配符处理,自然搜不到预期的产品。

额外调试小技巧

如果之后还有类似问题,可以用$this->db->last_query()打印出最终执行的SQL语句,这样能直观看到通配符是否正确拼接到查询里,帮你快速定位问题。

内容的提问来源于stack exchange,提问作者user8207090

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:14:59