不从数据库中获取数据

时间:2016-05-17 05:51:12

标签: mysql codeigniter

这里我有一个相同类别名称的列表,它们属于不同的父类别。当我根据id获取结果获取数据因为id对于所有人都不同但是当我按类别名称获取时我只得到第一个结果即使我在不​​同的父类别下有两个相同的类别名称,我的类别表

    id      category_name   parent_id
    8          men             0
    9          kids            0
    10       T-shirts          8
    11        Shirts           8
    12        Jeans            8
    13        Pants            8
    14        Shorts           8
    15        Tees             9
    16        Shirts           9
    17        Jeans            9
    18        Pants            9

这里有衬衫作为不同parent_id下的类别名称。当我选择16件衬衫的id时,由于相同的类别名称,我获得了id 11衬衫的价值。 这是控制器使用

public function men_clothing_image($category=null)    
{   

    $category_id =$this->roxmodel->get_category_id($category);     
    $data['active_mn']='men_clothing';

    $data['men']=$this->roxmodel->get_category_by_parent($p_id=8);
    $data['kids']=$this->roxmodel->get_category_by_parent($p_id=9);

    $config['base_url'] = base_url().'men-'.$category;
    $config['per_page'] = 2;
    $config['uri_rsegment'] = 4;
    $config['use_page_numbers'] = TRUE;
    $config['total_rows'] = $this->roxmodel->count_category_images($category_id);
    $data['galllery']=$this->roxmodel->get_gallery_men_images($category_id,$config['per_page'],$this->uri->rsegment(4));

    $this->load->library('pagination',$config);
    $data['page_links'] = $this->pagination->create_links();


    $this->load->view('men_clothing_image',$data);

}

这是传递的模型

 public function get_category_id($category_name)
 {
  $this->db->select('category.id');
  $this->db->where('category.category_name',$category_name);
  $result = $this->db->get('category')->row();
  if($result)
  {
   return $result->id;
  }
}

我已经完成了自连接以连接id和类别名称,但输出为空

public function get_category_id($category_name)
{
$this->db->select('c.id');
$this->db->join('category c1','c.id=c1.category_name');
$this->db->where('c1.category_name',$category_name);
$result = $this->db->get('category c')->row();
  if($result)
  {
    return $result->id;
  }
}

计算图像功能如下..

public function count_category_images($p_id)
{
  $this->db->select('gallery.*','category.category_name');
  $this->db->join('category', 'category.id = gallery.category_id');
  $this->db->where('category.id',$p_id);
  $this->db->order_by('gallery.id','desc');
  return $this->db->count_all_results('gallery');
}

2 个答案:

答案 0 :(得分:1)

您必须使用result()result_array()。因为结果中有几行。

row() - 此函数返回单个结果行。

result() - 此函数将查询结果作为对象数组返回,或者空数组返回

所以,试试

public function get_category_id($category_name)
{
  $this->db->select('category.id');
  $this->db->join('category c1','c.id=c1.category_name');
  $this->db->where('category.category_name',$category_name);
  $result = $this->db->get('category')->result();

  return $result;
}

您也可以使用

if ($query->num_rows() > 0)

检查是否有行。

如果您使用,搜索和使用类别名称的一部分,请使用LIKE的{​​{1}}个互联网。

答案 1 :(得分:0)

尝试使用类似查询

如果要控制放置通配符(%)的位置,可以使用可选的第三个参数。您的选择是在'之后,'之后'和'两个'

并尝试分组

public function get_category_id($category_name)
 {
 $this->db->select('category.id');
 $this->db->like('category.category_name',$category_name,'both');
 $this->db->group_by(array("category.id", "category.category_name","category.parent_id")); 
 $result = $this->db->get('category')->result_array();
  if($result)
  {
    print_r($result);
    exit;
   // return $result;
  }
}