PHP嵌套ifs和许多条件不起作用

I have many nested ifs and conditions in my code but it is not giving the desired output. What is the best way to write the following code :

$driver_code = $this->input->post('filter_driver_code');

        $unit_code = $this->input->post('filter_unit_code');

        $fuel_type = $this->input->post('filter_fuel');

        $date_to = $this->input->post('date_to');

        $date_from = $this->input->post('date_from');





        if (isset($date_from) and isset($date_to) and empty($unit_code) and empty($driver_code) and empty($fuel_type)) {

            $sql = "SELECT * FROM fuel_usage where (date between '$date_from' and '$date_to') ";
            $result = $this->db->query($sql);
        } elseif (isset($driver_code) and isset($unit_code) and isset($fuel_type) and isset($date_from) and isset($date_to)) {

            $sql = "SELECT * FROM fuel_usage where driver_code='$driver_code' AND unit_code='$unit_code' AND fuel_type='$fuel_type' and (date between '$date_from' and '$date_to')";
            $result = $this->db->query($sql);
        }  elseif (empty ($date_from) and empty ($date_to) and isset ($unit_code) and isset ($driver_code) and isset ($fuel_type)) {

            $sql = "SELECT * FROM fuel_usage where driver_code='$driver_code' AND unit_code='$unit_code' AND fuel_type='$fuel_type'";
            $result = $this->db->query($sql);
        }  else {
            $sql="SELECT * FROM FUEL_USAGE";
            $result = $this->db->query($sql);
        }

It does not give the right output.

Try all check with empty() may be isset() gives you problem cause on post isset for all variable will return true even values blank

       if (!empty($driver_code) && !empty($unit_code) && !empty($fuel_type) && !empty($date_from) && !empty($date_to)) {
            $sql = "SELECT * FROM fuel_usage where driver_code='$driver_code' AND unit_code='$unit_code' AND fuel_type='$fuel_type' and (date between '$date_from' and '$date_to')";
            $result = $this->db->query($sql);
        }elseif (!empty($date_from) && !empty($date_to) && empty($unit_code) && empty($driver_code) && empty($fuel_type)) {
            $sql = "SELECT * FROM fuel_usage where (date between '$date_from' and '$date_to') ";
            $result = $this->db->query($sql);
        }  elseif (empty($date_from) && empty($date_to) && !empty($unit_code) && !empty($driver_code) && !empty($fuel_type)) {
            $sql = "SELECT * FROM fuel_usage where driver_code='$driver_code' AND unit_code='$unit_code' AND fuel_type='$fuel_type'";
            $result = $this->db->query($sql);
        }  else {
            $sql="SELECT * FROM FUEL_USAGE";
            $result = $this->db->query($sql);
        }

or try in short way

$sql = "SELECT * FROM fuel_usage where 1 ";
if (!empty($driver_code)) {
  $sql .= " AND driver_code='$driver_code' ";
} 
if (!empty($unit_code)) {
  $sql .= " AND unit_code='$unit_code' ";
} 
if (!empty($fuel_type)) {
  $sql .= " AND fuel_type='$fuel_type' ";
} 
if (!empty($date_from) && !empty($date_to)) {
  $sql .= " AND date between '$date_from' and '$date_to' ";
}
$result = $this->db->query($sql); 
    if (!empty($driver_code) && !empty($unit_code) && !empty($fuel_type) && !empty($date_from) && !empty($date_to)) {

        $sql = "SELECT * FROM fuel_usage where driver_code='$driver_code' AND unit_code='$unit_code' AND fuel_type='$fuel_type' and (date between '$date_from' and '$date_to')";
        $result = $this->db->query($sql);
    }
    elseif(!empty ($unit_code) && !empty ($driver_code) && !empty ($fuel_type)) {

        $sql = "SELECT * FROM fuel_usage where driver_code='$driver_code' AND unit_code='$unit_code' AND fuel_type='$fuel_type'";
        $result = $this->db->query($sql);
    }
    elseif (!empty($date_from) and !empty($date_to)) {

        $sql = "SELECT * FROM fuel_usage where (date between '$date_from' and '$date_to') ";
        $result = $this->db->query($sql);
    }  else {
        $sql="SELECT * FROM FUEL_USAGE";
        $result = $this->db->query($sql);
    }