计算MySQL中的特定行

时间:2013-04-09 15:14:22

标签: php mysql

如果我想在我的数据库中计算一个特定行(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];

3 个答案:

答案 0 :(得分:1)

您需要为列添加别名。

SELECT COUNT(1) AS count ...

然后你会打电话给$row_followers[count]。请注意,不推荐使用mysql_个函数。在传递变量时了解prepared statements,并使用PDOMySQLi - 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一起压缩成一个命令。