MySQL资源的获取行数

时间:2014-02-27 19:23:04

标签: php mysql

全神贯注,无法找到办法。

我想计算循环查询的结果数量。

例如......

如果我有5个口袋妖怪,其中2个是Pikachus,它会显示4个口袋妖怪,但是在皮卡丘旁边有2个,我想要计算你拥有的不同口袋妖怪的数量,不包括皮卡丘。

这是我到目前为止所做的。

<div class="reg-box3" style="width:100%; margin:5px;">
<?php
$result = mysql_query("SELECT *, COUNT(*) number FROM user_pokemon WHERE belongsto='". $_SESSION{'username'}."'AND (slot='0') GROUP BY pokemon ORDER BY pokemon");
while($row = mysql_fetch_array($result))
{   

$sql2 = "SELECT * FROM pokemon WHERE name='".$row['pokemon']."'";
$result2 = mysql_query($sql2) or die(mysql_error());
$battle_get2 = mysql_fetch_array($result2);

?>
<div style="width: 24.5%; float: left;padding:.1%; ">
<?php

$idd= mysql_real_escape_string($row['id']);
$iddd = strip_tags($idd);

?>

2 个答案:

答案 0 :(得分:1)

AS之前,您的查询中遗漏了number。如果添加它,所需的计数将存储在$result['number']变量中。

顺便说一句,在这种情况下,您可能会发现mysql_num_rows()更容易。只需在MySQL资源上调用它,它就会返回获取的行数。

修改:使用mysql_num_rows就是这么简单:$count = mysql_num_rows($result);

答案 1 :(得分:0)

<?php
$result = mysql_query(
<<<SQL
    SELECT
        `t2`.`name` AS `name`,
        COUNT(*) AS `count`
    FROM `user_pokemon` AS `t1`
        JOIN `pokemon` AS `t2` ON (`t1`.`pokemon` = `t2`.`name`)
    WHERE
        `t1`.`belongsto` = '{$_SESSION{'username'}}'
        AND `t1`.`slot` = 0
    GROUP BY `name`
    ORDER BY `name`
SQL
);
while($row = mysql_fetch_array($result)){
    var_dump($row);
}
?>

不保证它有效,因为我不知道你的表结构,也不确定我是否从你的查询中得到了它。

PS 不要使用mysql_num_rows()计算记录。它需要从服务器传输数据,而如果您直接在MySQL中执行,则可以最轻松地获得最佳性能。