我有这个陈述:
$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变量中?为什么我不能把它放进去?而不是两者......这是做到这一点的方式。这是最好的做法
答案 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在父查询中获取该数字。