繁体   English   中英

使用 mysqli_fetch_array 多次循环查询结果?

[英]Looping through query results multiple times with mysqli_fetch_array?

mysqli_fetch_array()函数是否在返回每个值时删除它? 如果没有,当我完成循环后如何回到数组的顶部?

我需要多次遍历列表,因为我正在使用它来生成唯一的用户名(如果已经使用,则在末尾添加数字)。

$uniqueName = true;

while($row = mysqli_fetch_array($namesList)) {
    if ($row['Username'] == $UserBase) {
        $uniqueName = false;
    }
}

$number = 0;
if ($uniqueName == true) {
    $User = $UserBase;
}
else {
    while ($uniqueName == false) {
        $uniqueName = true;
        $number++;
        $tempList = $namesList2;
        while($row = mysqli_fetch_array($tempList)) {
            if ($row['Username'] == $UserBase . $number) {
                $uniqueName = false;
            }
        }
    }
    $User = $UserBase . $number;
}

$namesList是迄今为止数据库中所有用户名的列表。 基本上, $UserBase是加在一起的用户名和姓氏。 目前发生的情况是$User变成$Userbase ,最后是1 ,即使它应该是 2。但是,如果它是名称的第一个实例,那么它不会添加任何东西(按预期工作) .

您可以使用 mysqli_fetch_all 函数将所有结果作为数组返回,然后您可以像处理 PHP 中的任何其他数组一样对其进行操作:

$arr = mysqli_fetch_all($namesList, MYSQLI_ASSOC);

请注意,默认情况下mysqli_fetch_all()返回枚举行,如mysqli_fetch_row() ,如果需要关联数组,则需要添加MYSQLI_ASSOC作为参数。

魔术

$data = array();
while ($row = mysqli_fetch_array($res))
{
    $data[] = $row;
}

foreach ($data as $row) echo $row['name'];
foreach ($data as $row) echo $row['name'];
foreach ($data as $row) echo $row['name'];
foreach ($data as $row) echo $row['name'];
foreach ($data as $row) echo $row['name'];
foreach ($data as $row) echo $row['name'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM