没有根据where条件从数据库中获取正确的值

时间:2018-04-01 10:37:00

标签: php mysql sql database codeigniter

我正在尝试在codeigniter中运行查询。从前端获取的值有3个,这3个值是

$location
$min_exp
$max_exp

如果里面有一个值,那么它需要包含在where条件中,所以我为所有3个值创建了这样的查询

if($location)
    {
       $this->db->where('location', $location );
    }

if($min_exp)
    {
      $this->db->where('experience >= ', $min_exp );
    }

if($max_exp)
    {
      $this->db->where('experience <= ', $max_exp );
    }

$data1 = $this->db->get('tablename');
$first_array[] = $data1->result_array();
echo $this->db->last_query();

SELECT * FROM `tablename` WHERE `location` = 'USA' AND `experience` >= '4' AND `experience` <= '10' 

但是这个查询没有根据条件获取结果,当我尝试在phpmyadmin中执行查询时,它也会显示所有数据。

任何人都可以告诉我哪里出错了以及我需要如何纠正它

2 个答案:

答案 0 :(得分:0)

您的where子句应该如下所示:

WHERE `location` = 'USA' AND
       `experience` >= 4 AND `experience` <= 10

请注意location的相等性以及experience缺少单引号。

答案 1 :(得分:0)

似乎所有if()条件都没有任何值,因此查询会为您提供所有记录。

首先检查所有具有值的变量

if(!empty($location))
{
  var_dump($location); //OR
  print_r($location); 
}

如果所有变量都没有值,那么所有行都将返回,否则WHERE条件将适用