簡體   English   中英

創建用於過濾數據表的自定義WHERE子句

[英]Creating a custom WHERE clause for filtering datatables

我正在使用datatables,我正在嘗試創建一個自定義WHERE子句。 我有以下代碼:

$sWhere = "WHERE office=".$varOffice;
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 office='.$varOffice;
}

經過調試,我發現MySQL正在拋出一個錯誤。 錯誤1605。

我決定$sQuery這里找到的$sQuery

$sQuery = "
        SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
        FROM   $sTable
        $sWhere
        $sOrder
        $sLimit
        ";

然后我發現錯誤是因為WHERE子句沒有引號,如:

SELECT SQL_CALC_FOUND_ROWS `amount_due_owed`, `amount_paid`, `amount_remaining`, `reference_number` FROM accounting WHERE office=Office 1 

它應該是:

WHERE office='Office 1'

我一直在嘗試,但我無法弄明白。 我怎么能在變量周圍得到單引號?

在第一行添加單引號:

$sWhere = "WHERE office='".$varOffice."'";

另外:如果你只是在你的SQL查詢中插入隨機的$_GET變量,你最終會遇到不好的時間 請使用PDO或更安全的東西(甚至mysql_real_escape_string()不安全。)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM