您好我有一台记录客人和用户导航的机器,我正在尝试编写一个PHP脚本,它会对日志进行排序,并总结一下人们往往会去的前五个目的地,即最
到目前为止,这就是我所拥有的:
<?php
#### mysql connection #####
$db = mysql_connect("_","guest","_");
mysql_select_db(networkr) or die("Couldn't select the database");
echo "<table>";
$query = "SELECT uri LIMIT 5, COUNT(date) GROUP BY uri ORDER BY MAX(COUNT(date)), uri DESC";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "Top 5 Destinations:". $row['COUNT(date)'] ." ". $row['uri'] .".";
echo "<br />";
}
echo "</table>";
?>
因此,我试图通过使用日期作为唯一标识符来访问特定页面(uri)的所有时间。然后我希望它按从高到低的降序列出计数。然后只显示前五个访问量最大的页面。
我在网络浏览器中打开php脚本时遇到的错误是:
您的SQL语法有错误; 检查对应的手册 您的MySQL服务器版本 在'COUNT(日期)附近使用正确的语法 GROUP BY uri ORDER BY MAX(COUNT(日期)),uri DESC'在第1行
我认为它有某种语法错误,因为我不是php的专家。如果有人可以帮助我浏览脚本以获得最受欢迎的错误。
答案 0 :(得分:0)
在其余查询之后,LIMIT应该出现,并且您没有使用FROM子句指定从哪里获取记录,如下所示:
SELECT uri, COUNT(date)
FROM <tablename>
GROUP BY uri
ORDER BY MAX(COUNT(date)), uri DESC
LIMIT 5
答案 1 :(得分:0)
在ORDER BY之后移动LIMIT
SELECT uri,COUNT(date)FROM YourTable GROUP BY uri ORDER BY MAX(COUNT(date)),uri DESC LIMIT 5
答案 2 :(得分:0)
您不必使用MAX()
。只需使用下面的查询。
SELECT uri, COUNT(date) AS visits
FROM table
GROUP BY uri
ORDER BY visits DESC
LIMIT 5
你echo
喜欢这样:
while($row = mysql_fetch_assoc($result)){
echo "Top 5 Destinations:". $row['visits'] ." ". $row['uri'];
echo "<br />";
}