微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 非常奇怪的数据库查询结果

我的数据库查询得到了一个非常奇怪的结果,我希望有人能发现我错过的东西.

我的表中有一些示例数据:

feeling_id  country     date            feeling     digit
25          australia   2011-02-21      bad         1
26          australia   2011-02-21      bad         0
8            france      2011-02-21      better      1

我试图计算数据库中每个国家的数量,以及其中有多少数字为1.因此上述数据将给出:

澳大利亚,数字为1 = 1

数据库中的澳大利亚行= 2

数字为1 = 1的法国

数据库中的france行= 1

这是代码

<?PHP

include ('MysqLi_connect.PHP'); // indclude MysqL connection functions

$countries = array('united states','canada','united kingdom');
$r = array(); 

foreach($countries as $country){
        //e.g. $r_spain holds the results from the query below with spain as $country
        $r[$country] = MysqLi_query($dbc,"SELECT * FROM feelings WHERE country = '$country' AND digit='1'");

        //loop through the results
        while($row = MysqLi_fetch_array($r[$country], MysqLI_ASSOC)){
                $rowCount = MysqLi_num_rows($r[$country]);

        }       

        //e.g. $r_spain holds the results from the query below with spain as $country
        $r[$country] = MysqLi_query($dbc,"SELECT * FROM feelings WHERE country = '$country'");

        //loop through the results
        while($row = MysqLi_fetch_array($r[$country], MysqLI_ASSOC)){
                $rowCount2 = MysqLi_num_rows($r[$country]);

        }   

echo $country . '=' . $rowCount . '<br />';
echo $country . '=' . $rowCount2 . '<br />';

}
?>

数据库中只有两个加拿大行时,我得到以下结果,这些行都没有数字1 ???

美国的数字为1 = 13

数据库中的美国行= 17

数字为1 = 13的加拿大

数据库中的加拿大行= 2

联合王国,数字为1 = 4

数据库中的联合王国行= 4

答案应该说:“数字为1 = 0的加拿大”

1答案的数字加拿大似乎复制了1个结果的美国数字.

任何人都可以看到我哪里出错了?

非常感谢,alsweeet

解决方法:

您需要在foreach的开头将$rowCount和$rowCount2设置为0.因为没有找到加拿大的行,所以它永远不会进入while循环,因此使用上一次迭代中$rowCount和$rowCount2的值.

foreach($countries as $country){
    $rowCount = 0;
    $rowCount2 = 0;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐