在mysql中使用多个where条件

时间:2016-08-09 07:06:43

标签: php mysql codeigniter where-clause codeigniter-3

我有一个名为categories []的选择字段,其中有多个选择,我在更改功能上写了一个,所以在更改功能上它将控制器作为一个id的数组现在我想要的是我想要选择的食物来自具有这些类别的mysql表

<select name="categories[]">
    <?php 
      foreach ($category as $c) {

    ?>
     <option value="<?php echo $c->category_id; ?>"><?php echo $c->category_name;?></option>
    <?php
       }

     ?>
</select>

控制器

    public function get_foods(){

       $categories = $this->input->post(NULL,true);
       $sql = $this->subscription->get_foods($categories);
       $result = array(

                    'result' => $sql

       );
      echo json_encode($result);
    }

和模型

    public function get_foods($id){

    $sql = "SELECT * FROM food_category fc
            LEFT JOIN food f ON fc.food_id=f.food_id
            WHERE f.food_status = 1 AND
            fc.category_id = $id
            ORDER BY f.food_id DESC";
    $query = $this->db->query($sql);
    return $query->result_array();

}

我想要获取这些类别中的所有食物,所以我认为我应该使用一些多重条件?

3 个答案:

答案 0 :(得分:0)

您只需要在每种食物中存储类别,当您获得食物时,您可以使用其中的条件:

$this->db->where('category',$category);

答案 1 :(得分:0)

使用()sql函数中的where列为此。

有关详细说明。在这里找到     http://www.w3schools.com/sql/sql_in.asp

答案 2 :(得分:0)

如果这有用,我认为您需要逐个发布类别,然后获取它并将其放在一个数组中。这是一个可能有用的代码

public function get_foods()
{
    $result = array();
    foreach($this->input->post('categories') as $c)
    {
        $result[] = $this->subscription->get_foods($c);
    }
    echo json_encode($result);
}

对于模型我建议使用CI的AR

public function get_foods($category)
{
    $this->db->select('*');
    $this->db->from('food_category as fc');
    $this->db->join('food as f','fc.food_id = f.food_id','left');
    $this->db->where('f.food_status', '1');
    $this->db->where('fc.category_id',$category);        
    $query = $this->db->get();
    return $query->result_array();
}

首先我们创建一个空数组,然后在post中使用foreach,我们得到每个类别的所有食物,然后将它们返回到结果数组中。

希望这有帮助,如果sql中有任何错误,因为我可能已经忘记了一些加入,我愿意再次帮助。