2012-01-06 175 views
1

我正在使用以下函數從數據庫中選擇和排序某些圖像,但是ORDER不起作用。mySQL按字符串排序

$qry="SELECT * FROM modzzz_articles_screenshots WHERE entry_id='".$aDataEntry['id']."'"; 
$qryr=mysql_query($qry) or die("Error selecting: ".mysql_error()); 

while($qryrow = mysql_fetch_array($qryr)) { 

    $media_book_id = $qryrow['media_id']; 
    $qry2="SELECT * FROM bx_photos_main WHERE ID='".$media_book_id."' ORDER BY Title DESC"; 
    $qryr2=mysql_query($qry2) or die("Error selecting: ".mysql_error()); 

    while($qryrow2 = mysql_fetch_array($qryr2)) { 

     $photo_book_id = $qryrow2['ID']; 
     $a = array ('ID' => $aAuthor['ID'], 'Avatar' => $photo_book_id); 
     $aMedia_book_icon = BxDolService::call('photos', 'get_image', array($a, 'file'), 'Search'); 
     $aMedia_book_iconUrl = $aMedia_book_icon['file']; 
     $sRet .='<a class="fancybox" rel="gallery" href="'.$aMedia_book_iconUrl.'" title=""><img src="'.$aMedia_book_iconUrl.'"></a>'; 

    } 
} 

ORDER BY title ASCDESC總是返回同樣的事情。

有沒有錯誤?

難道問題是標題列不是一個INT值,但VARCHAR?

如果這是問題,我不能更改列標題,有沒有簡單的方法來訂購結果呢?

感謝

+0

u需要哪些其他的數據? – 2012-01-06 21:45:47

+1

您只能從第二個查詢中獲得一個結果...您使用WHERE ID =選擇它? ......這個命令什麼都不會做! ID是一個auto_increment列嗎? – ManseUK 2012-01-06 21:45:59

+0

你可以隔離查詢,執行它在MySQL(不是通過PHP)和張貼在這裏選擇和結果?這可以幫助。 – danihp 2012-01-06 21:46:16

回答

2

在這裏你限制只有一條記錄:

$qry2="SELECT * FROM bx_photos_main WHERE ID='".$media_book_id."' ORDER BY Title DESC"; 

所以,爲了ASC或DESC將是相同的永遠。 假設$media_book_id = 1;

SELECT * FROM bx_photos_main WHERE ID='".$media_book_id."' ORDER BY Title DESC 

SELECT * FROM bx_photos_main WHERE ID='".$media_book_id."' ORDER BY Title DESC 

將輸出EVER(與你的表結構)

id | title | file 
----------------------- 
01 | Test | test.jpg 

因爲我還沒有另一條線訂購升序或降序。

如果我有兩條線路,它將輸出ASC

id | title | file 
----------------------- 
01 | bar | test.jpg 
02 | foo | test.jpg 

併爲DESC

id | title | file 
----------------------- 
01 | foo | test.jpg 
02 | bar | test.jpg 
+0

這是什麼意思?我如何選擇正確的值?我很困惑 – 2012-01-06 21:54:04

+0

如果你只選擇一個ID,那麼'$ query2'只會導致一行。將更新我的答案。 – 2012-01-06 23:37:03