Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个和/或条件在Ci中不起作用_Php_Sql_Codeigniter_Mysqli - Fatal编程技术网

Php 多个和/或条件在Ci中不起作用

Php 多个和/或条件在Ci中不起作用,php,sql,codeigniter,mysqli,Php,Sql,Codeigniter,Mysqli,我被困在这里,看起来这个查询是正确的,但是我得到了一些不同的结果 选择'car\u id','picku\u date','picku time','drop\u date','drop\u time','booking\u status','picku seconds','drop\u seconds'` 来自“汽车预订”` 其中“拾取时间”介于1484516700和1484606100之间 或在1484516700和1484606100之间的“下降时间” 和'car_id'='14782'

我被困在这里,看起来这个查询是正确的,但是我得到了一些不同的结果

选择'car\u id','picku\u date','picku time','drop\u date','drop\u time','booking\u status','picku seconds','drop\u seconds'`
来自“汽车预订”`
其中“拾取时间”介于1484516700和1484606100之间
或在1484516700和1484606100之间的“下降时间”
和'car_id'='14782'
和“骑乘状态”!='完成'
和“预订”状态“!=”拒绝'
在这里,我得到汽车,但谁的车的id不是14782,没有汽车在这个id(14782),我得到其他汽车的详细信息

下面是我的代码

$this->db->选择(“车辆id、取车日期、取车时间、取车日期、取车时间、预订状态、取车秒数、取车秒数”);
$this->db->or_其中(“拾取时间在$ps和$ds之间”);
$this->db->or_其中(“在$ps和$ds之间放置_秒”);
$this->db->where('car_id',“14782”);
$query1=$this->db->get_-where(“汽车预订”,数组(“骑乘状态!=”=>“已完成”,“预订状态!=”=>“已取消”,“预订状态!=”=>“已拒绝”));
有人能推荐我吗

多谢各位

$where = "(pickup_seconds BETWEEN '.$ps.' AND '.$ds.' or drop_seconds BETWEEN '.$ps' AND '.$ds.' )"; 

$query = $this
        ->db
        ->select("car_id , pickup_date ,pickup_time ,drop_date,drop_time,booking_status,pickup_seconds,drop_seconds")
        ->from('car_booking')
        ->where($where)
        ->where('car_id' , "14782")
        ->where('ride_status !=' , "completed")
        ->where('booking_status !=',"rejected")
        ->get();


        if($query->num_rows()>0)
        {
            return $query->result();            }
        else {
           return null;
        }

我认为上面的代码是有效的,因为这就是我在我的CodeIgniter项目中在活动记录中实现orwhere条件的方式,因为我没有使用CodeIgniter的orwhere函数获得预期的结果。如果它不起作用,请评论下面的问题。

由于Codeigniter 3.0,您可以使用group\u start()和group\u end()。有关查询分组的详细信息

您的示例可以如下所示:

$query = $this->db    ->select("car_id , pickup_date ,pickup_time ,drop_date ,drop_time,booking_status,pickup_seconds,drop_seconds");

                        ->where('car_id' , '14782')
                        ->where('ride_status !=' , 'completed')
                        ->where('booking_status !=', 'rejected')
                        ->group_start()
                            ->where("pickup_seconds BETWEEN $ps AND $ds")
                            ->or_where("drop_seconds BETWEEN $ps AND $ds")
                        ->group_end()
                        ->get('car_booking');
return ($query->num_rows() ) ?$query->result():false;

查询看起来不正确,需要在2
条件周围使用大括号。不知道如何在CodeIgniter中做到这一点…我也有同样的感觉@jeroenOk,我会尽快通知你,这里有一个小的代码更改,我只返回true,但请记住返回$query->result()