MySQL计算最常见的值

4
我有一个MySQL数据库,用户可以在其中列出他们读过的书、想要读的书等。我正在尝试编写一个查询来查找用户列出的最常见的书。
我的当前查询是:
$result = mysql_query("SELECT title, COUNT(title) AS counttitle FROM books GROUP BY title ORDER BY counttitle DESC LIMIT 1"); 
            echo "<p>The most popular book listed by members is $result</p>";

这似乎(对我来说)是做这件事的逻辑方式,我看不出语法有什么问题,但我得到的结果是“会员列出的最受欢迎的书籍是资源ID#32”。
有人知道我错在哪里吗?
3个回答

5
我认为你可能忽略了这个:

 $row = mysql_fetch_assoc($result)

$result并不是答案,它是一个结果资源,其中包含了拥有答案的行。


4

您的查询没有问题,您需要了解一下PHP。

 result = mysql_query("SELECT title, COUNT(title) AS counttitle FROM books GROUP BY title ORDER BY counttitle DESC LIMIT 1");
 $row = mysql_fetch_assoc($result);
 echo "<p>The most popular book listed by members is " . row['title'] . "</p>";

文档:http://us3.php.net/mysql_query

返回值

对于SELECT、SHOW、DESCRIBE、EXPLAIN等返回结果集的语句,mysql_query()成功时返回资源,出错时返回FALSE。

对于其他类型的SQL语句,如INSERT、UPDATE、DELETE、DROP等,mysql_query()成功时返回TRUE,出错时返回FALSE。

返回的结果资源应该传递给mysql_fetch_array()及其他用于处理结果表的函数,以访问返回的数据。


1
语法上有轻微错误,应该在echo输出中使用$row['title']。 - Paul

1

这个例子应该会有所帮助
mysql_connect("localhost", "mysql_user", "mysql_password") or die("无法连接数据库: " . mysql_error()); mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

printf("ID: %s Name: %s", $row[0], $row[1]);

}
从这里获取 http://us2.php.net/mysql_fetch_array


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接