$rows = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) FROM x WHERE id='{$variable}' GROUP BY id"));
return $rows;
当我做一个print_r($rows(时,我得到一个看起来像这样的输出:
Array ( [COUNT(*)] => 2 )
我想要的是"2",所以我尝试了
print $rows[0];
这行不通。我试过了:
print $rows[COUNT(*)];
这也不起作用...
有什么想法吗?
感谢。
您可以使用
AS
关键字添加别名。我给这个名字起的名字是total
"SELECT COUNT(*) AS total FROM x WHERE id='{$variable}' GROUP BY id"
现在你可以得到它print $rows['total'];
只需将 SQL 语句修改为:
SELECT COUNT(*) AS total .......
现在您可以使用total
关键字访问它:
print $rows['total'];
您需要
COUNT()
的列别名。
$result = mysql_query("SELECT COUNT(*) AS numrows FROM x WHERE id='{$variable}' GROUP BY id"));
if ($result) {
$rows = mysql_fetch_assoc($result);
echo $rows['numrows'];
}
*关于错误处理和样式的注意事项: * 我已经重构了您的代码以$result
存储结果资源,而不是将其直接传递给mysql_fetch_assoc()
。 如果查询因任何原因失败,但您将资源直接传递给提取调用,则会收到错误。
请在下面的代码下
$rows = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM x WHERE id='{$variable}' GROUP BY id"));
return $rows;
这将为您工作。
如果使用mysql_fetch_array
则结果集分为 2 种类型,一种作为字段名称,另一种作为数组索引 0,1,....等等
这将帮助你
如果您需要复杂的查询(例如,选择文章和评论数(,我会根据手册中的这些行使用Click建议的AS
:
可以使用 AS alias_name为select_expr指定别名。别名是 用作表达式的列名,可在 GROUP BY 中使用, 排序依据或包含子句。例如:
从我的表中选择 CONCAT(last_name,'、',first_name( 作为full_name 按full_name排序;
但是,您只需要一个值,您应该使用mysql_fetch_row()
该值始终返回数字数组:
返回与读取的行对应的字符串的数字数组,如果没有更多行,则返回 FALSE。
因此,您将拥有:
$result = mysql_query("SELECT COUNT(*) AS numrows FROM x WHERE id='{$variable}' GROUP BY id"));
$row = mysql_fetch_row( $result);
print_r( $row); // array( 0 => 2);
echo $row[0]; //2
或者您可以使用mysql_fetch_result()
定义为
从 MySQL 结果集中检索一个单元格的内容。
用法很简单:
echo mysql_fetch_result( $result, 0, 0); // 2
function getOne($sql) {
$res = mysql_query($sql) or trigger_error(mysql_error().$sql);
if (!res) return FALSE;
$row = mysql_fetch_row($res);
return $row[0];
}
$count = getOne("SELECT COUNT(*) FROM x WHERE id='{$variable}' GROUP BY id");
尽管要使用此代码,必须了解用户定义的函数是什么。
echo mysql_result(mysql_query("SELECT COUNT(*) FROM x WHERE id='{$variable}' GROUP BY id"), 0, 0);