PHP来自数据库和查询

时间:2011-01-09 11:34:28

标签: php mysql foreach

我有一张桌子:

  

id,affiliate

每次有人点击链接时,都会插入一个新行

ID是页面的ID,而affiliate是联盟会员的ID。

例如:

  

页面ID:9会员ID:1

     

页面ID:9会员ID:2

     

页面ID:9会员ID:3

我只有3个分支机构。

我想选择此信息,并按关联企业对其进行分组,以获取ID。

我试过这个问题:

  

SELECT COUNT(*)FROM table   WHERE id ='9'GROUP BY   affiliate

我在php管理员工作时工作正常,如何在PHP中获取信息?

我试过了:

  

$ q = mysql_query(“SELECT COUNT(*)FROM   table WHERE id ='“。$ id。”'   GROUP BY affiliate“);

     

$ r = mysql_fetch_array($ q);

尝试将数据打印到页面上时,我只得到一个结果。

我是否需要使用foreach / while循环来获取所有3个?我该怎么做呢?

谢谢!

4 个答案:

答案 0 :(得分:3)

您应该在循环中执行mysql_fetch_array()(或mysql_fetch_assoc()):

while ($row = mysql_fetch_assoc($q)) {
    echo $row["id"];
    echo $row["affiliate"];
}

更新(根据评论):

如果您的结果中总共有3行,那么mysql_result()函数可能会有所帮助:

$firstAffiliate = mysql_result($q, 0, "affiliate");
$secondAffiliate = mysql_result($q, 1, "affiliate");
$thirdAffiliate = mysql_result($q, 2, "affiliate");
顺便说一句,小心并检查,查询是否实际返回3个结果。

答案 1 :(得分:2)

像这样循环:

while($row = mysql_fetch_array($q)) {
        print_r($row);
}

答案 2 :(得分:0)

如果您只想获取Affiliate ID的列表,可以考虑此查询

select group_concat(affiliate)
from table 
where id=9;

以上将在单行

中返回逗号分隔值,如1,2,3

因此,您可以在PHP中使用,进行爆炸,并且爆炸数组的大小与count(*)相同

答案 3 :(得分:0)

您可以使用变量在实际的mysql语句本身内保存状态。请尝试以下方法:

分支机构:   PAGE_ID   afil_id

设置@ page_id = 0; 选择page_id,if(@page_id<> page_id,count(*),0),@ page_id:= page_id来自page_id的点击组;

希望有所帮助