-4

なぜこれが不可能なのですか?resolutを空にしないようにする方法はありますか?

$sqlAllInfo = "SELECT item1, item2 FROM example";
$resAllInfo = mysql_query($sqlAllInfo);

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){

    echo $rowAllInfo['item1'];

}

$rowAllInfo = mysql_fetch_assoc($resAllInfo);

echo $rowAllinfo['item2'];

御時間ありがとうございます

4

3 に答える 3

2

いいえ、while ループの後、結果は常に空になります。while ループは結果リソースからすべての値を抽出するためです
。while ループは、抽出する情報がまだある間ループを続け、空であるかエラーが発生したときに終了します。最後のエントリを取得しようとすると発生

します $rowAllInfo にはまだ最後のエントリが含まれています ;)

于 2012-05-20T21:43:09.370 に答える
2

while 結果がなくなるまで、を使用して結果セットをループしています。これ以上結果がないため、 が返されるとwhileループが終了します。再度呼び出しても、それ以上結果がないことを意味します。mysql_fetch_assocfalsemysql_fetch_assoc

于 2012-05-20T21:43:27.700 に答える
2

この行:

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){

に新しい値を割り当て、rowAllInfoその後、それがまだ「真」であるかどうかをチェックします(PHPが「真」である場合と同じように;-))

これで、最後の行がフェッチされた後、mysql_fetch_assoc()false が返され、それが $rowAllInfo に割り当てられます。$rowAllInfo が "false" になったため、ループはもう実行されませんが、見てください。手遅れです! 変数にはすでに値がfalse割り当てられています。

その後もまた電話mysql_fetch_assoc()。ただし、ループ内のすべての行を既にフェッチしているため、それ以上の行は残っておらず、再び$rowAllInfo「false」に設定されています。

だから、あなたがしようとしていることは何でも - これはおそらくあなたのやり方ではありません. あなたがやろうとしていると私が理解していることを達成するための一般的な方法は次のとおりです。

$allRows = array();
while( $row = mysql_fetch_assoc($res) ) {
    $allRows[] = $row;
}

// show the array we just created...
echo print_r( $arrRows, 1 );
于 2012-05-20T21:49:38.277 に答える