我想运行这样的查询:
SELECT * FROM table WHERE field LIKE '%search_term%'
在CI中,如果您使用field=?
,则可以将参数绑定到查询,但这对field LIKE "%?%"
不起作用。从调试输出看来,使用的查询似乎是field LIKE "%'search'%"
。
有没有其他方法可以在CodeIgniter中进行搜索?
答案 0 :(得分:17)
您可以使用此查询:
SELECT * FROM table WHERE field LIKE ?
与%search%
而不是search
绑定。
你应该知道这个查询在MySQL中会很慢。您可能希望查看自由文本搜索(Lucene,Sphinx或MySQL的内置自由文本搜索功能)。
答案 1 :(得分:2)
这是codeigniter的活动记录类
$this->db->select('*');
$this->db->like('columnname','both');
$query=$this->db->get("tablesname");
$result=$query->result_array();
if(count($result))
{
return $result;
}
else
{
return FALSE;
}
你应该试试这个..我认为它可以帮到你.. 两者都意味着%columnname%, 之前表示%columnname, after表示列名%
答案 2 :(得分:1)
System.Runtime.Serialization.Primitives, Version=4.1.1.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' matches assembly
答案 3 :(得分:0)
我能理解CI是添加引号,在绑定时传递FALSE作为第三个参数以防止CI添加引号。