我有一个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"
任何人都知道我哪里出错了?
答案 0 :(得分:5)
我想你错过了这个:
$row = mysql_fetch_assoc($result)
$result
实际上不是答案,它是包含具有答案的行的结果资源。
答案 1 :(得分: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(),以及其他用于处理结果表的函数,以访问返回的数据。
答案 2 :(得分:1)
这个例子应该有所帮助
从这里http://us2.php.net/mysql_fetch_array
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . 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]);
}