【发布时间】:2013-08-24 04:47:19
【问题描述】:
请帮帮我:
SELECT *
FROM `product`
WHERE `vi_name` LIKE '%product%'
OR `en_name` LIKE '%product%'
AND `parent_id` != 0
我编写了自己的代码,但它仍然计算行数的方式有 parent_id = 0
function get_product_by_search_slug($slug) {
$this -> db -> from('product');
$this -> db -> like('vi_name', $slug);
$this -> db -> or_like('en_name', $slug);
$this -> db -> where_not_in('parent_id', 0);
$query = $this -> db -> get();
return $query -> result();
}
我有一个解决方案,它工作正常,但不知何故我不太满意:
function get_product_by_search_slug($slug) {
$this -> db -> select("* FROM `product` WHERE `vi_name` LIKE '%". $slug ."%' OR `en_name` LIKE '%". $slug ."%' AND `parent_id` != 0");
$query = $this -> db -> get();
return $query -> result();
}
【问题讨论】:
-
"AND
parent_id!= 0"..!=对于 SQL 不正确。使用<>或NOT IN -
一旦你在查询中使用了 OR,你就需要大括号,所以它不能纯粹写在活动记录中,你需要像 ->where('(vi_name like '%something% ' OR en_name like '%something%)', NULL, FALSE)->where('parent_id !=', 0)
-
@DavidStarkey 我正在使用 mySQL,不知何故它可以工作。
-
@ahmad 我仍然没有完全理解你的想法。你能从我的案例中写一个演示吗?我会更加感激。谢谢你。
标签: codeigniter