2014-05-12 37 views
-1

我正在構建一個網站,從保存在mysql數據庫中的表中獲取信息。我有一個.php文件,它需要這樣一行數組: $titles = mysqli_fetch_all($tresult);mysqli_fetch_all如何排序行?

然後,在另一個文件中我將它與下面的語句設置爲一個數組中的javascript:

var markerTitleArray = <?php echo json_encode($titles); ?>;

然後我循環通過數組:

for (var i = 0; i < markerTitleArray.length; i++){ 
      for (var j = 0; j < markerTitleArray[i].length; j++){ 
       console.log(markerTitleArray[i][0]); 
      } 
} 

但現在,標題的順序不同。我覺得這個問題是我不完全明白如何mysqli_fetch_fall()命令的事情。

任何幫助將不勝感激!

+7

' mysqli_fetch_all()'不排序。你的查詢的'ORDER BY'子句呢。缺少'ORDER BY',查詢的排序順序基本上是未定義的。 –

+0

我不是說排序。我的意思是,如果我有一排只是「1,2,3」,它是否打印出「1,2,3」? – FlaqueDeau

+1

您的意思是_columns_出現在結果集中的順序?這是由它們在'SELECT'中的位置定義的。 'SELECT a,b,c'來定義順序,而不是'SELECT *' –

回答

6

mysqli_fetch_all()以與mysql相同的順序返回您的行,也就是說它沒有排序。不要被你在結果中看到的任何感知順序所迷惑 - 沒有ORDER BY子句,你的結果排序是不可預測的。不要將此與隨機順序混淆 - 您可能會看到以與插入順序大致相同的順序返回的記錄,但這不會被強制執行。

如果你關心的順序,你必須使用ORDER BY:http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html

+0

雖然這並沒有完全回答我想回答的問題,但它回答了我問的問題,並將我帶入我的解決方案。謝謝! – FlaqueDeau

+1

我想補充一點,如果MySQL在複雜語句中使連接變得更容易,那麼MySQL會很樂意地爲你的數據做各種瘋狂的重新排序,如果MySQL計算Desc索引的話,期望找到與插入相反的順序返回的行它比ASC指數更好。 – scragar

+2

@FlaqueDeau:你想要一個不同的問題的答案? –

2

的順序完全取決於您的查詢領域的順序:

$query="SELECT a,b FROM myCollection ORDER BY a"; 
$result=mysqli_query($connexion,$query); 

此訂單將影響陣列返回:

mysqli_fetch_all($result,MYSQLI_ASSOC); 

無論如何,mysqli_fetch_all()不是處理數據的好方法(從性能的角度來看,因爲它可以獲取單個重要的數組中的所有數據,尤其是在應用程序不是很小的情況下)。