两个循环,第二个返回空数组?

时间:2012-12-23 05:46:28

标签: php mysqli

我正在尝试使用MySQLi并使用以下代码来检查我应该如何处理fetch_array(MYSQLI_ASSOC);

的数组格式化/用法的差异

这是我的代码:

include "Database.php"; 

$ArrayQuery = $mysqli->query("SELECT * FROM accountinformation");


while ($ArrayResults = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
    echo count($ArrayResults);
    echo "<br>";
}
echo "<br><br><bR><br>";
    $Empty = array();
while ($ArrayResult = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
    foreach ($ArrayResult AS $ArrayRes)
    {
        $Empty[] = $ArrayRes;
    }
}

print_r($Empty);

问题是,我在while循环中使用相同的Variable,第一个返回3然后3这是预期的。

但问题是,我的第二个问题;它返回一个空白数组

array( )

时,

print_r();

当我这样做时:

while ($ArrayResult = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
    print_r($ArrayResult);
}

对于我的第二个while循环,它不返回任何输出。

我检查了我的变量$ArrayResults,而$ArrayResult不是重复的,它们实际上是唯一的。

为什么我的第二个while循环在我的第一个循环工作时没有返回任何内容?

更新

当我使用不同的起始变量对混合物进行第二次查询时:

$ArrayQuer = $mysqli->query("SELECT * FROM accountinformation");

并修改我的第二个while循环:

while ($ArrayResult = $ArrayQuer->fetch_array(MYSQLI_ASSOC))
{
    print_r($ArrayResult);
}

我得到了预期的输出?那么MySQLi不允许在整个脚本中使用两次相同的参数吗?

1 个答案:

答案 0 :(得分:1)

  

mysqli_data_seek

     

将结果指针调整为中的任意行   结果

while ($ArrayResults = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
    {
        echo count($ArrayResults);
        echo "<br>";
    }
    echo "<br><br><bR><br>";
    mysqli_data_seek($ArrayQuery,0); // Addition Made Here
        $Empty = array();
    while ($ArrayResult = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
    {
        foreach ($ArrayResult AS $ArrayRes)
        {
            $Empty[] = $ArrayRes;
        }
    }
    print_r($Empty);

重新使用已经获取的数组;你应该使用mysqli_data_seek();注意我已将它添加到你的`$ Empty Variable 上面)这应该是问题所在。

请参阅此处的手册:

http://us.php.net/manual/en/mysqli-result.data-seek.php

想想这个场景;你为什么要重新购买你已经拥有的东西?

完美适合你的情况