2017-07-06 27 views
0

數據表的class.php並獲得一個錯誤,如下數據表使用ssp.class.php放棄語法錯誤的警告

錯誤 :

An SQL error occurred: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY request_id ASC↵ LIMIT 0, 10' at line 4

我的服務器端代碼如下命名爲請求list.php的

<?php 
    $inc_files = array("ph_utils"); 
    require_once ('autoload.php'); 
    $db = new db(); 
    $table = 'wallet_load_request'; 
    $primaryKey = 'request_id'; 
    $columns = array(
    array('db' => 'request_id', 'dt' => 0), 
    array('db' => 'request_date', 'dt' => 1), 
    array('db' => 'trans_mode', 'dt' => 2), 
    array('db' => 'trans_amt', 'dt' => 3), 
    array('db' => 'request_status', 'dt' => 4), 
    array('db' => 'org_id', 'dt' => 5) 
); 
    $sql_details = array(
    'user' => PH_DB_USER, 
    'pass' => PH_DB_PSWD, 
    'db' => PH_DB, 
    'host' => PH_DB_HOST 
    ); 
require_once('ssp.class.php'); 
$filterByStaus = isset($_REQUEST['filter_by_status']) ? 
$_REQUEST['filter_by_status'] : "PENDING"; 

switch ($filterByStaus) { 
case 'REJECTED': 
$fixedFilter .= " AND request_status = 'REJECTED'"; 
break; 
case 'APPROVED': 
$fixedFilter .= " AND request_status = 'APPROVED'"; 
break; 
default: 
break; 
} 
$output = SSP::simple($_GET, $sql_details, $table, $primaryKey, $columns, 
$fixedFilter); 
foreach ($output['data'] as $i => $d) { 
$request_id = $output['data'][$i][0]; 
$trans_amt = $output['data'][$i][3]; 
$request_status = $output['data'][$i][4]; 
$org_id = $output['data'][$i][5]; 
$output['data'][$i][0] = '<div class="text-center"><h4><span class="label label-success"> #'. $request_id .'</span></h4></div>'; 

if ($request_status == 'APPROVED') { 
$output['data'][$i][4] = '<div class="text-center"><span class="label label-success"> APPROVED </span></div>'; 
$output['data'][$i][5] = '<div class="text-center"><button id="accept" type="button" class="text-center btn btn-success accept disabled" data-request_id=\'' . $request_id . '\' data-org_id=\'' . $org_id . '\' data-trans_amt=\'' . $trans_amt . '\'><i class="fa fa-ban"></i> ACCEPT</button></div>'; 
$output['data'][$i][6] = '<div class="text-center"><button id="reject" type="button" class="text-center btn btn-danger reject disabled" data-request_id=\'' . $request_id . '\'><i class="fa fa-ban"></i> REJECT</button></div>'; 
} else if ($request_status == 'REJECTED') { 
$output['data'][$i][4] = '<div class="text-center"><span class="label label-danger"> REJECTED </span></div>'; 
$output['data'][$i][5] = '<div class="text-center"><button type="button" id="accept" class="text-center btn btn-success accept disabled" data-request_id=\'' . $request_id . '\' data-org_id=\'' . $org_id . '\' data-trans_amt=\'' . $trans_amt . '\'><i class="fa fa-ban"></i> ACCEPT</button></div>'; 
$output['data'][$i][6] = '<div class="text-center"><button type="button" id="reject" class="text-center btn btn-danger reject disabled" data-request_id=\'' . $request_id . '\'><i class="fa fa-ban"></i> REJECT</button></div>'; 
} else { 
$output['data'][$i][4] = '<div class="text-center"><span class="label label-warning"> PENDING </span></div>'; 
$output['data'][$i][5] = '<div class="text-center"><button type="button" id="accept" class="text-center btn btn-success accept" data-request_id=\'' . $request_id . '\' data-org_id=\'' . $org_id . '\' data-trans_amt=\'' . $trans_amt . '\'><i class="fa fa-ban"></i> ACCEPT</button></div>'; 
$output['data'][$i][6] = '<div class="text-center"><button type="button" id="reject" class="text-center btn btn-danger reject" data-request_id=\'' . $request_id . '\'><i class="fa fa-ban"></i> REJECT</button></div>'; 
} 

}  
SSP::sendJson($output); 

我jQuery代碼是如下請求list.js

var requestList = { 
    oTable: {}, 
    init: function() { 

    requestList.oTable = $('#req_list').dataTable({ 
    "processing": true, 
    "serverSide": true, 
    "columnDefs": [{className: "data_middle ", "targets": [0, 1, 2, 3, 4, 5, 6]}], 
    "columns": [null, null, null, {"orderable": false}, {"orderable": false}, {"orderable": false}, {"orderable": false}], 
    "ajax": { 
    "url": "web/request-list", 
    "data": function (d) { 
    return $.extend({}, d, { 
    "filter_by_status": $('#status').val(), 

    }); 
    } 
} 
}); 
} 
} 

我的前端代碼是list.html


過濾方式: PENDING APPROVED REJECTED
<br> 


    <div class="row"> 
    <div class="col-md-10 col-md-offset-1"> 
     <table class="table table-bordered table-striped table-hover" id="req_list"> 
     <thead> 
     <tr> 
     <th>Request ID</th> 
     <th>DATE</th> 
     <th>Mode</th> 
     <th class="text-center">AMOUNT</th> 
     <th class="text-center">STATUS</th> 
     <th class="text-center">ACCEPT</th> 
     <th class="text-center">REJECT</th> 
     </tr> 
     </thead> 
     <tbody> 
     </tbody> 
     </table> 
    </div> 
    </div> 

運行代碼後頁面顯示警告爲DataTables warning:table id = req_list - 發生SQL錯誤:SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法中有錯誤;檢查第4行

,並在控制檯我得到的錯誤作爲

jquery.dataTables.min.js:39 Uncaught TypeError: Cannot read property 'length' of undefined

相當於你的MySQL服務器cersion爲正確的語法用戶附近的「ORDER BY REQUEST_ID ASC LIMIT 0,10」手動自定義SSP代碼如下下面鏈接

https://drive.google.com/open?id=0B-e2dOqifK3QOFFnRjhTYjhPQmM

+2

您使用的是自定義SSP類嗎?在原始文件中沒有'sendJson()'函數,'simple()'函數只接受'5'參數。 –

+0

是以前的開發者做了自定義的ssp文件 –

回答

0

我只需要更改下面的代碼

switch ($filterByStaus) { 
case 'REJECTED': 
$fixedFilter .= " AND request_status = 'REJECTED'"; 
break; 
case 'APPROVED': 
$fixedFilter .= " AND request_status = 'APPROVED'"; 
break; 
default: 
break; 

我追加查詢,所以我試着刪除。after $ fixedFilter

switch ($filterByStaus) { 
case 'REJECTED': 
$fixedFilter = " AND request_status = 'REJECTED'"; 
break; 
case 'APPROVED': 
$fixedFilter = " AND request_status = 'APPROVED'"; 
break; 
default: 
break; 
0

如果你想過濾的數據在這種情況下,你需要使用complex()而不是simple()方法。

複合物()方法

SSP::complex($request, $conn, $table, $primaryKey, $columns, $whereResult = null, $whereAll = null) 

簡單()方法

simple($request, $conn, $table, $primaryKey, $columns) 

讓我們知道,如果它不爲你工作。

+0

沒有工作的兄弟 –

+0

可以請你分享調用SSP的語法.. –

+0

我已經附上了自定義ssp文件的鏈接到這個問題,你可以檢查ssp的全部功能 –

0

您不需要$fixedFilter變量值中的前導AND。請參見下面的更正摘錄:

switch ($filterByStaus) { 
case 'REJECTED': 
    $fixedFilter = "request_status = 'REJECTED'"; 
    break; 

case 'APPROVED': 
    $fixedFilter = "request_status = 'APPROVED'"; 
    break; 

default: 
    break; 
} 
+0

嘗試這些但我可以知道爲什麼我得到那個錯誤? –

+1

@RakeshPatil,我相信發生錯誤的原因是當語句被構造時導致'AND'創建無效語句。例如'WHERE和request_status ='REJECTED''而不是'WHERE request_status ='REJECTED'' –

+0

好吧,我正在嘗試這些在我的活服務器上,並會讓你知道它是否工作。我appriciate你的幫助 –