我的数据库查询得到了一个非常奇怪的结果,我希望有人能发现我错过的东西.
我的表中有一些示例数据:
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 举报,一经查实,本站将立刻删除。