2012-01-11 2 views
1

私はこの質問が以前に尋ねられたことを知っていますが、私はeveythingを試してみて、それがどのように動作するのか見つけることができません。 私は準備されたクエリを持っている、と私は2で二回、それを使用する必要がありながら、()は次のようにループ:pdoの結果を巻き戻すにはどうしたらいいですか?

$query = $pdo->prepare('SELECT ...'); 
$query->execute(); 
while($results = $query->fetch()){ 
// instructions 
} 

// rewind 
while($results = $query->fetch()){ 
// instructions 
} 

おかげ

+1

重複:http://stackoverflow.com/questions/278259/is-it-possible-to-rewind-a-pdo-result – TimWolla

+0

私はこの記事を見ましたが、それを機能させる。 – romainberger

+0

同じ質問をすると、同じ回答を得る危険があります。 –

答えて

-1

は、第一反復とループ上のすべての結果を得るような単純なものでした第二に:

$res = array(); 
while($results = $query->fetch()){ 
    $res[] = $results; 
    // instructions 
} 

foreach($res as $results){ 
    // instructions 
} 
+2

実際には、 'fetchAll'を使って最初のループを取り除くだけでよいでしょう。 – netcoder

+0

@netcoder lol可能性があります(私はPDO **をまったく知らない**) – Neal

+0

私が見たすべてのものよりも容易になり、動作します。ありがとう – romainberger

3

が答えの上に展開するには、次のように使用できます。

$results = $query->fetchAll(); 

の$結果は、今では、結果セット、含む配列であること:MySQLのを代わりに

foreach ($results as $row) ... 

を、あなたは、バッファリングのクエリを使用することができます。

$stmt = $db->prepare('SELECT ...', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); 

はfetchAll()メソッドは、独立したデータベース・ベンダーになりますが、メモリ要件が高くなります。

+0

はい、しかし、fetchAll()では、次のような行の番号を使用する必要があります:$ result [0]、$ result [1] ...しかし、私は使用する必要があります2番目のループのコードのうち、最初のコードでは同じ番号を持ち、すべての結果ではないコードです。だから私はその数を知らない。 (私にはわかりませんが...) – romainberger

関連する問題