2013-05-10 224 views
-3

我有一些调用名为“fed”的表的代码,并且完美地列出了内容。然后在WHILE语句中调用另一个名为“country”的表。我希望PHP代码计算“country”中与“fed”表中的当前行具有相同fedID编号的任何记录,该表中还有一个名为fedID的列。PHP Count not counting

我用这个代码来调用 “国家” 表:

$countrySQL = "SELECT * FROM country WHERE country.fedID=$fedRow->fedID";  
        $countryResult = $glob->query($countrySQL) or die(mysqli_error()); 
        if($countryResult){ 
         while($countryRow = $countryResult->fetch_object()){ 
          if($countryRow->fedID=$fedRow->fedID) { 
           echo "(" . $countryRow->fedID . ")"; 
          } 
         } 
        } 

然后我得到的结果:

(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1) 
(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2) 
(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3) 

哪个数据库相匹配。但是,如果我更改SQL读取:

$countrySQL = "SELECT COUNT(*) FROM country WHERE country.fedID=$fedRow->fedID"; 

然后,我得到一个空的结果。我希望它显示总共1 = 45,2 = 51,3 = 21。

我在做什么错?感谢您的时间。

+0

您是否在更改查询后修改了您的代码?您正在查看行中的字段是否匹配,但使用COUNT(*)查询时,这些字段将不再存在。 – andrewsi 2013-05-10 16:31:18

+0

GROUP BY某些事情,如果你想要比计数更多,你必须选择更多的计数 – Strawberry 2013-05-10 16:32:08

回答

4

也许你应该有一个==而不是=这里:

if($countryRow->fedID=$fedRow->fedID) { 
+0

我发现了一个简单的解决方案来解决我的问题。 我添加了一个简单的i = i + 1循环,并以这种方式计算结果。 – 2013-05-12 11:56:22

0

andrewsi在这里有一个观点:$countryRow->fedID不会是结果的一部分了,给计数结果像这样的名字:

SELECT COUNT(*) AS mycount WHERE ....那么它应该可以用$countryRow->mycount

+0

我真的不明白这个意见,请问你能把它放入俗语吗? – 2013-05-11 00:22:43

+0

谢谢您花时间帮助我 – 2013-05-12 11:57:27