2012-07-07 70 views
1

您好我想在我的數據表服務器端處理文件中添加一個自定義的WHERE子句。當頁面加載時,我已設法使其工作,但在過濾之後忽略where子句並返回所有結果。將where子句添加到數據表過濾

代碼:

$sWhere = "WHERE customers_id= ".$customersId; 
if (isset($_GET['sSearch']) && $_GET['sSearch'] != "") 
{ 
    $sWhere = "WHERE ("; 
    for ($i=0 ; $i<count($aColumns) ; $i++) 
    { 
     if (isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true") 
     { 
      $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch'])."%' OR "; 
     } 
    } 
    $sWhere = substr_replace($sWhere, "", -3); 
    $sWhere .= ')'; 
} 

/* Individual column filtering */ 
for ($i=0 ; $i<count($aColumns) ; $i++) 
{ 
    if (isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '') 
    { 
     if ($sWhere == "") 
     { 
      $sWhere = "WHERE "; 
     } 
     else 
     { 
      $sWhere .= " AND "; 
     } 
     $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' "; 
    } 
} 

我想不通的地方添加其他WHERE子句,以便它beign過濾時也工作。

回答

2

刪除第一行,在末尾添加這個(在iffor後):

$sWhere .= ($sWhere ? ' AND ' : ' WHERE ') . 'customers_id = ' . $customersId; 
+0

剛剛嘗試過它,它只是處理卡住,並給出500錯誤,當我嘗試在該行後面搜索 – arrowill12 2012-07-07 00:22:53

+0

'var_dump($ sWhere)'並向我顯示結果。 – Petah 2012-07-07 01:28:55

+0

當我做一個var_dump我無法進入搜索,因爲JSON格式化是錯誤的做額外的var_dump信息 – arrowill12 2012-07-07 05:12:35

0

在這裏結束瞭解決它是解決方案:

$sWhere = "WHERE customers_id=".$customersId; 
if (isset($_GET['sSearch']) && $_GET['sSearch'] != "") 
{ 
    $sWhere = "WHERE ("; 
    for ($i=0 ; $i<count($aColumns) ; $i++) 
    { 
     if (isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true") 
     { 
      $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch'])."%' OR "; 
     } 
    } 
    $sWhere = substr_replace($sWhere, "", -3); 
    $sWhere .= ') AND customers_id='.$customersId; 
    //var_dump($sWhere); 
} 

需要在代碼只是這2個地點

0

試試這個

/* LINE 86 
    $sWhere = ""; 
     if (isset($_GET['sSearch']) && $_GET['sSearch'] != "") 
     { 
       $sWhere = "WHERE ("; 
       for ($i=0 ; $i<count($aColumns) ; $i++) 
       { 
         $sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_GET['sSearch'])."%' OR "; 
       } 
       $sWhere = substr_replace($sWhere, "", -3); 
       $sWhere .= " AND customer_id='".$_GET['customer_id']."'"; 
       $sWhere .= ')'; 
     }else{ 
       $sWhere = "WHERE customer_id='".$_GET['customer_id']."'"; 
     } 

我希望能夠解決你的目的。