【问题标题】:How to display a single column in while loop using PHP?如何使用 PHP 在 while 循环中显示单列?
【发布时间】:2018-12-25 06:58:30
【问题描述】:

请帮助我处理下面的代码,它没有按预期工作。我在下面的 mysql 表中有几条记录,并使用下面提到的相同列名:

id    |    name        |    referrer
1     |    User1       |    referrer_one
2     |    User2       |    referrer_one
3     |    User3       |    referrer_one
4     |    User4       |    referrer_two
5     |    User5       |    referrer_two

我希望在 while 循环中使用 PHP 将上述数据显示如下:

Referrer Username      |     Total Referrals
referrer_one           |     3
referrer_two           |     2

我正在使用下面的代码,请告诉我我做错了什么:

<table width="100%">
  <tr>
    <td>Referrer Username</td>
    <td>Total Referrals</td>
  </tr>
  <?php
  $data = $db->query("SELECT referrer, count(*) as total_member FROM 
  user_registration GROUP BY referrer");          

  while($res=mysqli_fetch_array($data,MYSQLI_BOTH)) {
      foreach ($res as $key => $value) {
  ?>    
  <tr>
    <td><?php echo ($value['referrer']); ?></td>
    <td><?php echo ($value['total_member']); ?></td>
  </tr>
  <?php } } ?>
</table>

使用上述代码后,我收到以下错误消息:

Warning: Illegal string offset 'referrer'
Warning: Illegal string offset 'total_member'

请帮助我,我真的需要有效的解决方案!

【问题讨论】:

  • 删除你的 foreach。您当前正在遍历所有结果,然后在结果中循环
  • 感谢您的回答,它很有帮助。
  • 没问题。我个人尽可能多地尝试画/写我必须做的事情以及我希望如何解决我的问题。找出代码有什么问题并避免在没有真正注意的情况下自动执行操作很有帮助

标签: php mysql while-loop phpmyadmin


【解决方案1】:

您不需要额外的foreach 循环,因为 mysqli_fetch_array() 一次获取一条记录(结果行)。

试试这个:

while($res=mysqli_fetch_array($data,MYSQLI_BOTH)) { ?>    
<tr>
  <td><?php echo ($res['referrer']); ?></td>
  <td><?php echo ($res['total_member']); ?></td>
</tr>
<?php } ?>

使用while 循环,您已经遍历了结果集中的每条记录,直到没有记录为止。

使用额外的 foreach 循环,您将遍历返回记录的每一列(总共 4 列,因为您使用了 MYSQLI_BOTH):

$key = 0 and $value = some scalar value ... 
$key = 'referrer' and $value = some scalar value ...
$key = 1 and $value = some scalar value ...
$key = 'total_member' and $value = some scalar value

【讨论】:

  • 谢谢 Decent Dabbler,你让我开心。现在它按预期工作。再次感谢你帮助我,继续努力,上帝保佑你:)
  • @SyedNaveed 欢迎您,很高兴听到它解决了您的问题。 :)
猜你喜欢
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
相关资源
最近更新 更多