【问题标题】:PHP from database and query来自数据库和查询的 PHP
【发布时间】:2011-01-09 11:34:27
【问题描述】:

我有一张桌子:

id,附属

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

ID 是页面的 ID,affiliate 是会员的 ID。

例如:

页面 ID:9 会员 ID:1

页面 ID:9 会员 ID:2

页面 ID:9 会员 ID:3

我只有 3 个附属机构。

我想选择此信息,并按关联公司对 ID 进行分组。

我试过这个查询:

table 中选择计数(*) 其中id = '9' 分组依据 affiliate

当我在 php my admin 中执行此操作时效果很好,我如何在 PHP 中获取信息?

我试过了:

$q = mysql_query("SELECT COUNT(*) FROM table WHERE id = '" . $id . "' 分组affiliate");

$r = mysql_fetch_array($q);

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

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

谢谢!

【问题讨论】:

  • 您要求她提供 foreach/while 解决方案,但不希望根据您的 cmets 进行循环?我很困惑...

标签: php mysql foreach


【解决方案1】:

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

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

UPDATE(根据评论):

如果结果中总是有 3 行,mysql_result() 函数可能会有所帮助:

$firstAffiliate = mysql_result($q, 0, "affiliate");
$secondAffiliate = mysql_result($q, 1, "affiliate");
$thirdAffiliate = mysql_result($q, 2, "affiliate");

顺便说一句,请仔细检查,查询是否实际返回 3 个结果。

【讨论】:

  • 我不想在我的内容中循环,我想基本上定义 3 个变量,我可以在页面下方调用它们,而不必将我的内容放入 while 循环中。
  • 更新了案例的答案,当您只有 3 行时
  • @Kyle:需要一个循环,因为查询返回 3 行。反对使用 mysql_result() 是愚蠢和不好的做法。
【解决方案2】:

这样循环:

而($row = mysql_fetch_array($q)) { 打印_r($行); }

【讨论】:

  • 我不想在我的内容中循环,我想基本上定义 3 个变量,我可以在页面下方调用它们,而不必将我的内容放入 while 循环中。
【解决方案3】:

如果你只是想得到Affiliate ID的列表,你可以考虑这个查询

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

上面将在单行中返回一个逗号分隔值,如1,2,3

那么,你可以在 PHP 中使用, 进行分解,分解后的数组大小与count(*) 相同

【讨论】:

    【解决方案4】:

    你可以使用一个变量来保存实际 mysql 语句本身的状态。请尝试以下操作:

    关联公司: page_id afil_id

    设置@page_id=0; select page_id, if(@page_id page_id, count(*), 0), @page_id:=page_id from clicks group by page_id;

    希望有帮助

    【讨论】:

      猜你喜欢
      • 2015-11-20
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 2017-10-08
      • 2017-09-30
      • 2013-04-20
      相关资源
      最近更新 更多