這有什麼更好的解決方案。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' –
要添加到^,請使用預準備語句。 –