0

我正在试验 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);

问题是,我在Variable我的while循环中使用相同的,第一个返回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 不允许在整个脚本中使用两次相同参数的情况吗?

4

1 回答 1

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 变量上方)这应该是问题所在。

请参阅此处的手册:

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

想想这种情况;你为什么要重新购买你已经拥有的东西?

非常适合您的情况

于 2012-12-23T05:59:21.570 回答