【问题标题】:not fetching the correct values from database based on where condition未根据 where 条件从数据库中获取正确的值
【发布时间】:2018-04-01 10:37:00
【问题描述】:

我正在尝试在 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 中执行查询时,它也会显示所有数据。

谁能告诉我哪里出错了,我需要如何纠正它

【问题讨论】:

  • 位置
  • @LJ01 位置出错,我已经更新了
  • @sammy 你在 $first_array[] 中得到了什么?
  • @Mohit Kumar 我正在获取表格的所有行
  • 那你想要什么?

标签: php mysql sql database codeigniter


【解决方案1】:

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

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

注意location 的相等性和experience 缺少单引号。

【讨论】:

  • 我在 CodeIgniter 中编写代码,这是通过它生成查询的地方,所以我无法对引号做任何事情
【解决方案2】:

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

首先检查所有变量是否有值

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

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

【讨论】:

    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2020-04-19
    • 2020-12-11
    相关资源
    最近更新 更多