在mysql中使用count函数

时间:2011-10-18 13:15:26

标签: php mysql database

我有这个陈述:

       $result1=mysql_query(" SELECT COUNT(*) FROM users WHERE user_name='$userName'") or exit(mysql_error());

我希望以这种方式找到计数:

   if($row=mysql_fetch_array($result1))
   {
       $userNameResult=$row['COUNT(*)'];
   }

我想我做得不对?还是我?为什么我将count(*)放在statment和row变量中?为什么我不能把它放进去?而不是两者......这是做到这一点的方式。这是最好的做法

4 个答案:

答案 0 :(得分:3)

您正在做什么,但最好在查询中为COUNT(*)创建一个列别名,您可以在提取调用中引用该列别名。这实际上只是一种可读性改进。

$result1=mysql_query(" SELECT COUNT(*) AS userCount FROM users WHERE user_name='$userName'") or exit(mysql_error());
//------------------------------------^^^^^^^^

if($row=mysql_fetch_array($result1))
{
    $userNameResult=$row['userCount'];
}

如果您修改了查询以选择所有行,然后使用mysql_num_rows(),则可以完全不使用提取调用。哪种方法更有效取决于数据库的内容。

$result1=mysql_query("SELECT user_name FROM users WHERE user_name='$userName'");
// Echo the row count...
if ($result1) echo mysql_num_rows($result1);

答案 1 :(得分:2)

总是更容易为列添加别名,如

$result1=mysql_query(" SELECT COUNT(*) AS userCount FROM users WHERE user_name='$userName'") or exit(mysql_error());
if($row=mysql_fetch_assoc($result1))
{
   $userNameResult=$row['userCount'];
}

或只使用数字数组

$result1=mysql_query(" SELECT COUNT(*) AS userCount FROM users WHERE user_name='$userName'") or exit(mysql_error());
if($row=mysql_fetch_row($result1))
{
   $userNameResult=$row[0];
}

答案 2 :(得分:1)

你为什么不这样做:

$result1=mysql_query(" SELECT COUNT(*) AS result FROM users WHERE user_name='$userName'") or exit(mysql_error());

if($row=mysql_fetch_array($result1))
   {
       $userNameResult=$row['result'];
   }

答案 3 :(得分:0)

    $userNameResult=$row[0];

这就是全部

但是,我怀疑这是一个嵌套查询,在循环中运行? 在这种情况下,您应该使用JOIN在父查询中获取该数字。