所以我正在尝试创建一个列表,该列表将显示属于某个区域的所有用户。为此,我尝试使用一个 while 循环,它将显示所有名称。请参阅下面的代码:
<h2>Region 2:</h2>
<?php
//REGION 2:
$result = mysqli_query($ExampleDB,"SELECT * FROM members WHERE region=2 ORDER BY user DESC");
while($row = mysqli_fetch_array($result))
{
echo "</br>Position 2: ";
if ($row['position']==2){
echo"".$row['fname']." ".$row['sname'].", ";
}
echo "</br>Position 3: ";
if ($row['position']==3){
echo"".$row['fname']." ".$row['sname'].", ";
}
}
mysqli_close($dbConnection);
}
?>
唯一的问题是,那么它显然也会为每个用户回显"位置 2"和"位置 3"......关于如何拆分两个位置以使 while 循环在回声之后发生的任何建议?我也尝试像这样拆分while循环,但随后没有出现任何名称:
$result = mysqli_query($ExampleDB,"SELECT * FROM members WHERE region=2 ORDER BY user DESC");
echo "</br></br>Position 2: ";
while($row2 = mysqli_fetch_array($result))
{
if ($row2['position']==2){
echo"".$row2['fname']." ".$row2['sname']." ".$row2['user'].", ";
}
}
echo "</br></br>Position 3: ";
while($row3 = mysqli_fetch_array($result))
{
if ($row3['position']==3){
echo"".$row['fname']." ".$row['sname'].", ";
}
}
我也尝试将它们全部保留为$row,也没有产生任何名称。如何拆分 while 循环?或者有没有更好的方法来回显数组中位置 2,3 标头之后的特定名称?
$result = mysqli_query($ExampleDB,"SELECT * FROM members WHERE region=2 ORDER BY user DESC");
echo "</br></br>Position 2: ";
while($row2 = mysqli_fetch_array($result))
{
if ($row2['position']==2)
{
echo"".$row2['fname']." ".$row2['sname']." ".$row2['user'].", ";
}
}
$result = mysqli_query($ExampleDB,"SELECT * FROM members WHERE region=2 ORDER BY user DESC");
echo "</br></br>Position 3: ";
while($row3 = mysqli_fetch_array($result))
{
if ($row3['position']==3)
{
echo"".$row['fname']." ".$row['sname'].", ";
}
}
如果您再次查询该语句,这实际上可以正常工作。在第一个 while 循环获取数组之后,数组到达数组的末尾。执行 fetch 数组不会返回任何内容。因此,您必须再次查询。
您可以在第一次输出标头后设置一个标志。这并不理想,但避免了重新设计您的方法:
$pos_two_header = true;
$pos_three_header = true;
while($row = mysqli_fetch_array($result))
{
if ($row['position']==2){
if($pos_two_header) {
echo "</br>Position 2: ";
$pos_two_header = false;
}
echo"".$row['fname']." ".$row['sname'].", ";
}
if ($row['position']==3){
if($pos_three_header) {
echo "</br>Position 2: ";
$pos_three_header = false;
}
echo"".$row['fname']." ".$row['sname'].", ";
}
}
根据 Jeroen 关于使用 data_seek
而不是第二次运行查询的评论,这将起作用,但并不像简单地寻求 0 索引那么容易。使用 PHP 5.4 处理此解决方案要容易得多,其中结果集作为可遍历返回。喜欢这个:
$result = $ExampleDB->query("SELECT * FROM members WHERE region=2 ORDER BY user DESC");
foreach($result as $row)
{
echo "</br>Position 2: ";
if ($row['position']==2){
echo"".$row['fname']." ".$row['sname'].", ";
}
}
$result->field_seek(0);
foreach($result as $row)
{
echo "</br>Position 3: ";
if ($row['position']==3){
echo"".$row['fname']." ".$row['sname'].", ";
}
}