【问题标题】:Looping through query results multiple times with mysqli_fetch_array?使用 mysqli_fetch_array 多次循环查询结果?
【发布时间】:2014-03-21 17:41:36
【问题描述】:

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。但是,如果它是名称的第一个实例,那么它不会添加任何东西(即按预期工作)。

【问题讨论】:

  • 你能粘贴你的代码吗?
  • @9997 你去 :)

标签: php sql mysqli


【解决方案1】:

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

$arr = mysqli_fetch_all($namesList);

【讨论】:

    【解决方案2】:

    魔法

    $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'];
    

    【讨论】:

    • 这就是 OP 实际要求的内容
    • @YourCommonSense 我循环了几次,但我没有回应它。但我确实知道foreach 循环是如何工作的,即使我的问题听起来不聪明:P
    • @YourCommonSense 聪明!谢谢!
    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多