2013-06-20 149 views
-2

現在我用這個非常複雜的方法,我認爲選擇前5名可能是一個容易得多如何從MySQL數據庫

<?php 
$a=0; 
for($i=100; $i>=0; $i--){ 
$query= mysql_query("SELECT * FROM data WHERE likes=$i"); 
if($query){ 
$data= mysql_fetch_array($query); 
$a++; 
if($a<=5){ 
?><img id=a<?php echo $a; ?> src="img.php?id=<?php echo $data['id']; ?>"/><?php 
} 
} 
} 
?> 

通過我已經連接到數據庫 的方法是什麼我想要知道頂部像 這樣的圖像的編號,這將只適用於多達100個喜歡,如果2具有相同的數量,它也不會工作 有沒有更好的方式來做到這一點?

+0

我要猜測「MySQL」?在任何情況下,搜索「select top from mysql」應該會產生很多結果(大多數會涉及分組或集合,因爲這更有趣,但限制的語法應該很快顯而易見;更多的是,如果鏈接到手冊首先被發現)。 – user2246674

+0

這可能有所幫助:http://stackoverflow.com/questions/5422488/select-first-10-distinct-rows-in-mysql –

+0

小心! '$ i ='或'1'='1'繁榮! – elclanrs

回答

4

首先,你可以寫你的SQL,使其排序和限制結果集:

SELECT * FROM data ORDER BY likes DESC LIMIT 5 

看起來更成爲MySQL的選擇語法在這裏:http://dev.mysql.com/doc/refman/5.0/en/select.html

接下來,你不應該使用mysql_功能。他們已被棄用了很長時間。考慮切換到mysqli_或更好的使用PDO

+0

好的。你如何在數組中訪問這些數據?因爲會有5行而不是1 – user2438604

+0

使用PDO:'$ statement = $ pdo-> prepare($ query); while($ row = $ statement-> fetchObject()){echo $ row-> id; }'。檢查PDO的文檔,所有內容都將清晰。 –

+0

@ user2438604你已經在使用'mysql_fetch_array()',這就是你訪問這些行的方式。閱讀文檔以獲得更多信息,或者有很多教程。 – BLaZuRE

0
$query= mysql_query("SELECT * FROM data WHERE likes=$i ORDER BY date_inserted DESC LIMIT 5); 

如果你有一個日期,或者如果你有一個串行主鍵,你可以通過SERIAL降序去工作。

+0

適合指出需要ORDER BY來確保LIMIT有意義(否則結果可能是任意的記錄)。仍然不適合使用字符串插值。 – user2246674