php - 无法正确使用查询

标签 php mysql sql codeigniter

<分区>

我正在尝试在 CodeIgniter 中运行以下查询,但它没有返回正确的输出 根据查询,条件之一是如果 $supplier_id 的值不匹配则不应显示任何结果。但是,无论 supplier_id 的值是多少,它都会显示所有结果。谁能帮我更正这个查询

public function get_onboarded_detail()
    {
        $supplier_id = 40;
        $query = $this->db->select('*')

          ->from('job')
          ->join('job_workforce', 'job_workforce.job_id = job.id', 'Right')
          ->where('job_workforce.supplier_id',$supplier_id)
          ->where('job_workforce.status','onboarded')
          ->or_where('job_workforce.status','job_offer')
          ->or_where('job_workforce.status','offer_accepted_by_client')
          ->or_where('job_workforce.status','offer_accepted_by_supplier')
          ->get();
          $res =  $query->result();          
    }

最佳答案

你的 where 条件的实际问题是因为它包含“OR”条件,所以无论你的 supplier_id 系统将返回 true 结果。看下面的例子:-

你当前的where条件:-

WHERE job_workforce.supplier_id = 40 AND job_workforce.status = 'onboarded' OR job_workforce.status = 'job_offer' OR job_workforce.status = 'offer_accepted_by_client' OR job_workforce.status = 'offer_accepted_by_supplier' 

应该是:-

WHERE job_workforce.supplier_id = 40 AND (job_workforce.status = 'onboarded' OR job_workforce.status = 'job_offer' OR job_workforce.status = 'offer_accepted_by_client' OR job_workforce.status = 'offer_accepted_by_supplier') 

要使用 codeigniter 进行更正,请使用:

public function get_onboarded_detail()
{
    $supplier_id = 40;
    $query = $this->db->select('*')

      ->from('job')
      ->join('job_workforce', 'job_workforce.job_id = job.id', 'Right')
      ->where("job_workforce.supplier_id = $supplier_id AND (job_workforce.status = 'onboarded' OR job_workforce.status = 'job_offer' OR job_workforce.status = 'offer_accepted_by_client' OR job_workforce.status = 'offer_accepted_by_supplier')");

      ->get();
      $res =  $query->result();          
}

关于php - 无法正确使用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52329899/

相关文章:

c# - 过程或函数 ' ' 需要未提供的参数 ' '

php - 使用列的最大值更新在 mysql 中不起作用

php - PDO 连接行为

MySQL 在带有 If 条件的 While 循环中设置变量

php - 贝叶斯评级

PHP 和 MYSQL - 我应该如何处理我的图像数据?

mysql表: index vs primary

sql - 构建数据库表的最佳方式是什么?

php - 根据计数用php生成数字字符串

php - Laravel 存储符号链接(symbolic link)