【发布时间】:2011-10-18 01:46:34
【问题描述】:
我有三个表:“users”、“products”和“product_types”。 “用户”表存储有关我的站点用户的所有常用数据(包括id 列); “产品”表列出了产品的product_id、添加它的用户的user_id,以及product_type; 'product_types' 表有一个 id 列(对应于 'products' 表中的 product_type int 值)和一个 varchar name 列。
我想在“用户”表中执行%like% 搜索,以便当用户搜索产品类型时,它会显示拥有与搜索的产品类型匹配的产品的所有用户。这是我目前在 CodeIgniter 模型中使用的内容:
$string = urldecode($string);
$this->db->select('users.*');
$this->db->from('users');
$this->db->like('users.company_name',$string,'both');
$this->db->or_like('users.address_1',$string,'both');
$this->db->or_like('users.city',$string,'both');
$this->db->or_like('users.contact',$string,'both');
$this->db->or_like('product_types.name',$string,'both');
$this->db->join('products','users.id = products.client_id');
$this->db->join('product_types','products.product_type = product_types.id');
$this->db->distinct();
$users = $this->db->get();
foreach($users->result() as $user){
// search result
}
然后我将它输入到一个 foreach 语句中......但它大部分时间只显示第一行 - 其他时候它返回没有结果。谁能告诉我哪里出错了?
【问题讨论】:
-
尝试打印
$this->db->last_query();,它显示了已运行的 SQL 查询。
标签: php codeigniter join search sql-like