php - 如何使用 PHP 在 while 循环中显示单列?
问题描述
请帮助我处理下面的代码,它没有按预期工作。我在下面的 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
循环,因为
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
推荐阅读
- arduino - 使用两核esp8266
- php - 如何在 Code igniter 中将图像上传到数据库中?
- javascript - 在 Chrome 控制台中加载外部库
- phpword - 为什么 PhpWord 不能识别 &?
- r - 变量值随“ifelse”变化
- vba - Select the result of replacement - Word Macro
- flutter - 水平视口被赋予了无限的高度,可能来自 ListView.builder
- html - 在 VBA 创建的 HTML Outlook 电子邮件中设置电子邮件正文背景颜色
- r - 计算稀疏矩阵每列中两个值之间的元素数
- android - 由于约束布局,Android 应用程序在启动时崩溃