2012-07-07 55 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']."'"; 
     } 

我希望能够解决你的目的。