如果我想在我的数据库中计算一个特定行(unread
),我该如何处理这个MySQL查询?截至目前,它占据了整个表格。
$result_notifications = mysql_query("select count(1) FROM bhost_notifications where taker_id='$user_info[u_id]'");
$row_notifications = mysql_fetch_array($result_notifications);
$total_notifications = $row_notifications[0];
答案 0 :(得分:1)
您需要为列添加别名。
SELECT COUNT(1) AS count ...
然后你会打电话给$row_followers[count]
。请注意,不推荐使用mysql_
个函数。在传递变量时了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪些变量。
答案 1 :(得分:0)
我怀疑你有一个非规范化的数据库。虽然在某些情况下这是可取的,但我怀疑它们属于你的。如上所述,您无法确定查询是否会返回您想要的行。 SQL不保证行的顺序,除非您使用order by子句。
似乎这个问题表明一些语法问题存在更多问题。
答案 2 :(得分:0)
随着时间的推移,我在PHP中编写了一个很好的函数,它允许我轻松查找记录,但仍然足够动态,可以在我执行的每种类型的查询中使用。
用法:
if (get("select * from table", $query_array) > 0)
{
// There is at least one row returned
$result_array = mysql_fetch_array($query_array);
.
.
.
} else {
// No rows in the set
}
功能:
function get($sql, &$array)
{
$array = "";
$q = mysql_query($sql);
if (mysql_error())
{
$ret = -1;
print "<div><font style='font-family: arial; font-size: 12px;'><font style='color: red;'>Error:</font> " . mysql_error() . "<br>SQL: #sql</font></div>";
exit(1);
} else {
$ret = mysql_num_rows($q);
if ($ret > 0)
{
$array = $q;
}
}
return $ret;
}
如果查询存在问题,这也会给出格式化的错误消息。我一直使用它,因为它将mysql_query和mysql_num_rows一起压缩成一个命令。