2012-09-05 35 views
0

我具有從數據檢索的值的代碼base.but我想在反向order.See這個例子抓取值以相反的順序<pre><code>2 def 1 abc </code></pre> <p>我怎麼能做到這一點。我不想使用查詢這樣的使用ORDER BY.so我可以控制這在PHP結束?</p>

While($row=mysql_fetch_assoc($rs)){ 


echo $row['id']."<br>";//gives 1 and 2 and so on 
    echo $row['val']."<br>";// gives abc and def and so on 

} 

抓取此值但我想

+0

如果訂單對您很重要,那麼您可能要考慮使用'order by',因爲mysql不能保證每次查詢運行時行將以相同的順序返回。 – Erik

回答

3
while($row = mysql_fetch_array($rs)){ 
    $data[] = $row; 
} 

$data = array_reverse($data,true); 

while($data){ 
} 

沒有測試它雖然

this site測試,它的工作原理。下面是我使用的代碼片段:

$data = array(1 => array("foo" => "bar"), 2 => true); 
$data = array_reverse($data,true); 
print_r($data); 

編輯: 使用您編輯的答案,我得到這個: $數據=陣列(1 =>陣列(1, 「ABC」),2 =>陣列(2, 「DEF」));

$data = array_reverse($data,true); 
foreach($data as $d){ 
    echo "id>".$d[0]." | val>".$d[1]."<br />"; 
} 
+0

這隻會返回特定行中的元素,而不是像'$ array(id => 4,Name => Fluffeh)'獲得'$ array(Name => Fluffeh,id => 4)'。 – Fluffeh

+0

你是對的,我沒有想到,只是把它扔到答案......我的主要觀點是'array_reverse'方法 – silentw

+0

這是正確的,但你應該編輯你的答案,以表明OP應該存儲首先查詢數組中的查詢結果,然後在完成從數據庫中獲取數據之後對其進行反轉。 – Fluffeh

4

將數據存儲在數組中(在while循環中)。之後,您可以使用array_reverse來反轉項目順序。

+0

感謝您的回答,但我如何使用array_reverse,我嘗試使用像silentw老答案。 –

+0

@HarshalMahajan檢查我的答案 – silentw

1

您也可以使用通過你的結果集迭代 - 移動向後和向前的光標 - 使用類似PDO - 也許類似的變化互相連接類型:

cursor_orientation

對於PDOStatement對象表示可滾動遊標的對象,此值確定將哪個行返回給調用者。該值必須是PDO :: FETCH_ORI_ *常量之一,默認爲PDO :: FETCH_ORI_NEXT。要爲PDOStatement對象請求可滾動遊標,當您使用PDO :: prepare()準備SQL語句時,必須將PDO :: ATTR_CURSOR屬性設置爲PDO :: CURSOR_SCROLL。

但是使用array_reverse可能會更簡單。話雖如此,排序查詢中的數據將再次更簡單(可能效率更高)。

+0

感謝您回答Fluffeh,但我從PDO不太知道。 –

+0

@HarshalMahajan這是'mysql_ *'函數的更新,更炫和更安全的版本 - 目前已被棄用:) – Fluffeh

+0

好吧我一定會學到this.coz我在這裏看到很多高級會員建議使用PDO。 –

1
$result = $mysqli->query($query); 

for($i = $result->num_rows - 1; $i>0; $i--){ 
    $result->field_seek($i); 
    $finfo = $result->fetch_field(); 
    echo $finfo->id; 
    echo $finfo->val; 
} 
+0

thnks爲答案,但我不使用mysqli .. :( –

相關問題