【发布时间】:2018-09-14 10:18:21
【问题描述】:
我正在尝试在 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();
}
【问题讨论】:
-
尝试在
$res = $query->result();之前回显查询echo $this->db->last_query();exit(); -
@Shreyas Achar 我得到这个 o/p = SELECT * FROM
jobRIGHT JOINjob_workforceONjob_workforce.job_id=job.idWHEREjob_workforce.supplier_id= 40 ANDjob_workforce.status= 'onboarded' 或job_workforce.status= 'job_offer' 或job_workforce.status= 'offer_accepted_by_client' 或 @987654543333 = 'offer_accepted_by_supplier' -
如果你输入
$supplier_id = '',你得到的输出是什么? -
@ShreyasAchar 它给出了这个o/p SELECT * FROM
jobRIGHT JOINjob_workforceONjob_workforce.job_id=job.idWHEREjob_workforce@. @ = '' ANDjob_workforce.status= 'onboarded' 或job_workforce.status= 'job_offer' 或job_workforce.status= 'offer_accepted_by_client' 或job_workforce.@9876543 offer_accepted_by_supplier' -
如果是我,我会忘记所有 CI 的东西,而是专注于获取有效的原始查询。从那里我们可以讨论如何用 CI 的语法重写它。如果您想采用这种方法,请参阅:Why should I provide an MCVE for what seems to me to be a very simple SQL query?
标签: php mysql sql codeigniter