2015-11-24 112 views
0

我需要在.php腳本(AJAX文件)中返回一個數據庫表。目前,我有這樣的:AJAX MySQL Query Order by

header('Content-type: application/json; charset=UTF-8'); 
$gettblstmt = $pdo->prepare('SELECT * 
          FROM `tbl1` 
          ORDER BY `ordernum`'); 
$gettblstmt->execute(); 
$tbl= $gettblstmt->fetchAll(PDO::FETCH_ASSOC); 
echo json_encode($tbl); 

現在,我使用的$.post功能從jQuery到「跑」的PHP腳本。但是,由於AJAX文件的結果是一個對象,因此將不會應用ORDER BY

我怎樣才能從MySQL到MySQL正確的順序?

$.post('someajaxfile.php', function(result) 
{ 
    for (var i = 0; i < result.length; i++) 
    { 
     $('#someelement').append(result[i] + '<br>'); 
    } 
}); 
+0

javascript代碼在哪裏? –

+0

由於您提到AJAX – vincent

+1

,請完成客戶端到服務器的片段json_encode不會更改排序。如果結果來自mysql命令(這似乎是這種情況),那麼這個排序將被保存在json對象中 –

回答

0

當PDO查詢返回給客戶端時,實際上保留了來自PDO查詢的「訂單」數據。將數據編碼爲JSON時,對象或項目仍按照從查詢中檢索的數組順序進行排序。

你可以做什麼來改變排序?

header('Content-type: application/json; charset=UTF-8'); 
$gettblstmt = $pdo->prepare('SELECT * 
          FROM `tbl1` 
          ORDER BY `ordernum`'); 
$gettblstmt->execute(); 
$tbl= $gettblstmt->fetchAll(PDO::FETCH_ASSOC); 
echo json_encode($tbl); 

首先,ORDER BY ordernum可以接受ORDER BY ordernum DESCORDER BY ordernum ASC根據您的要求。

二,在客戶端的代碼或你的jQuery代碼。您可以更改添加項目的方法。

從附加:

$('#someelement').append(result[i] + '<br>'); 

你可以改變預謀:

$('#someelement').prepend(result[i] + '<br>'); 

注:在您的示例代碼,你追加整個對象,而不是從你的JSON的indiviual項目。您沒有在追加內使用i變量。因此,在您當前的代碼中,您可能會看到[object Object]

+0

我犯了一個錯誤 - 它還早,我有點困 - 所以我忘了'[ 1]'。但是我沒有明白你的意思:從你發佈的內容看,這和我現在的一樣, –