2013-03-31 37 views
-2

我想在我的一个网站上进行比赛,我是PHP新手,所以我要求您的帮助。PHP如何提取3个结果

我有这样的代码到目前为止

<?php 
    $con = mysql_connect("localhost", "user", "pass"); 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db("database",$con); 
    $sql = "SELECT * FROM videos WHERE source = 0"; 
    $result = mysql_query($sql,$con); 
    while ($row = mysql_fetch_object($result)) { 
     $userid = $row->user_id; 
     $points = $row->votes * $row->rating * $row->views; 
     echo "UID: $row->user_id POINTS: $points <br />"; 
    } 

有谁能告诉我,请我怎么可以重复刚刚3分的结果,那些与$points最高值,按降序排列?

+0

我强烈建议使用mysqli或PDO而不是弃用的mysql扩展名。 –

+1

@Wrikken玩得不错。每个人都从某处开始。你的语气没有建设性。 –

回答

0

尝试这样:

SELECT *, score = v.votes * v.ratings * v.views 
FROM videos AS v 
WHERE source = 0 
ORDER BY score DESC 
LIMIT 3 

子布纳!

0
$sql = "SELECT * FROM videos WHERE source = 0 ORDER BY votes*rating*views DESC LIMIT 3"; 

注意,这是一个性能杀手:它会计算所有视频的点数,包括那些未显示的点数。你可能想考虑一个单独的列,也许用一个触发器来填充它。

我个人认为这是很好的风格 - 它有助于,如果你曾尝试改变点算法。

+0

谢谢,我不介意性能,因为这个脚本将安装的页面不会有太多的意见,我有一个强大的服务器 –

0

SELECT列名(S)FROM table_name1 UNION SELECT列名(S)FROM table_name2 IS只是告诉你1个里面关闭表中的所有元素。