这有什么更好的解决方案。SQL Concat Where子句
我有一个函数包含三个可选参数(businessunit_id,department_id,jobtitle)。我必须根据接收参数建立动态的WHERE SQL子句。
CODE
public function getEmpSearchResult($businessunit_id,$department_id,$jobtitle)
{
$i=0;
$WHERE = "";
if (!empty($businessunit_id))
{
if($i==1) {
$WHERE = $WHERE." AND";
}
$WHERE = "businessunit_id"."=".$businessunit_id;
$i=1;
}
if (!empty($department_id))
{ if($i==1) {
$WHERE = $WHERE." AND";
}
$WHERE = $WHERE." department_id"."=".$department_id;
$i=1;
}
if (!empty($jobtitle))
{
if($i==1) {
$WHERE = $WHERE." AND";
}
$WHERE = $WHERE." jobtitle_id"."=".$jobtitle;
$i=1;
}
$query = "SELECT * FROM `main_employees_summary` WHERE $WHERE ";
$data = $db->query($query)->fetchAll();
return $data;
在上面的代码中。内置WHERE条件我concating $ WHERE变量和使用$ I变量来跟踪并在必要时条件。
是否有任何优化的方法来实现这一目标?
收集到数组,然后'implode' –
要添加到^,请使用预准备语句。 –