mySQL按字符串排序

时间:2012-01-06 21:42:57

标签: php mysql

我使用以下函数从我的数据库中选择和订购一些图像,但是ORDER不起作用。

$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始终返回相同的内容。

有错误吗?

问题可能是Title列不是INT值而是VARCHAR?

如果这是问题所在,我无法更改列标题,是否有一种简单的方法来订购结果?

由于

1 个答案:

答案 0 :(得分: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