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);

問題は、Variablewhileループに同じものを使用していることです。最初のループが返され3、次に3これが返されます。

しかし、問題は、私の2番目のクエリです。空白の配列を返します

array( )いつprint_r();

そして私がするとき:

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

2番目のwhileループでは、出力に対して何も返しません。

私は自分の変数をチェック$ArrayResults$ArrayResultましたが、重複していません。実際、それらは一意です。

最初のwhileループが機能しているときに、2番目のwhileループが何も返さないのはなぜですか?

アップデート

別の開始変数を使用して混合物に2番目のクエリを生成すると、次のようになります。

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

2番目のwhileループを変更します。

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

期待どおりの出力が得られますか?では、MySQLiの場合、スクリプト全体で同じパラメーターを2回使用することはできませんか?

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 に答える