2009-08-28 19 views
5
$query1 = "SELECT * FROM idevaff_affiliates"; 
$affiliateID = mysql_query($query1) or die(mysql_error()); 

Questa è la mia domanda qui sopra - vorrei usarlo per due cicli whilemultipla MENTRE PHP loop utilizzando la stessa query

Il primo è nella sezione di intestazione - la creazione di jQuery

while($row = mysql_fetch_assoc($affiliateID)){ 
} 

il secondo viene utilizzato in un ciclo while nel corpo

while($row = mysql_fetch_assoc($affiliateID)){ 
} 

Perché non posso farlo funzionare? - L'ho fatto funzionare ma ho dovuto fare due query usando le stesse informazioni SELECT usando due variabili diverse.

risposta

11

La chiamata mysql_fetch_assoc() recupera la riga successiva (ad esempio, la successiva che non è stata ancora recuperata). Una volta recuperate tutte le righe, restituisce false. Quindi, una volta superato il primo ciclo, lo ha recuperato tutte le righe da e tutto ciò che si ottiene è false ogni volta!

Se è necessario riutilizzare due volte gli stessi dati, che ne dici di inserire tutto in un array?

$rows = array(); 
while($row = mysql_fetch_assoc($affiliateID)){ 
    $rows[] = $row; 
} 

Ora è possibile scorrere $rows tutte le volte che vuoi:

foreach($rows as $row) { ... } 
+0

Grazie - Non volevo continuare il mio lavoro. – Kauthon

+1

@ Il suggerimento di Wizzard di 'mysql_data_seek' per riavvolgere il set di risultati è un'opzione migliore. Tra l'altro, non userà un mucchio di RAM sui set di risultati come questa risposta memorizzando ogni riga in memoria. – ceejayoz

6

Questo non funziona perché una volta che si esegue attraverso il set di risultati una volta, i risultati puntatore interno è alla fine . Per utilizzarlo nuovamente è necessario utilizzare mysql_data_seek prima del secondo ciclo per reimpostare il puntatore interno all'inizio del set di risultati.

1

Si può cercare la prima riga ... usando mysql_data_seek ($ affiliateID, 0), ora si può fare mysql_fetch_assoc() di nuovo ... comunque, preferisco caricare il risultato in un array.

Problemi correlati