Per qualsiasi motivo ho bisogno di passare attraverso un risultato mysql impostato due volte. C'è un modo per farlo? Non voglio eseguire la query due volte e non voglio dover riscrivere lo script in modo che memorizzi le righe da qualche parte e riutilizzarle successivamente.Come passare attraverso il risultato mysql due volte?
risposta
Ecco come si può fare:
$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
// do whatever here...
}
// set the pointer back to the beginning
mysql_data_seek($result, 0);
while($row = mysql_fetch_assoc($result)){
// do whatever here...
}
Tuttavia, avrei dovuto diciamo, questo non sembra il modo giusto per gestire questo. Perché non eseguire l'elaborazione all'interno del primo ciclo?
perché mysql_fetch_assoc()? posso usare mysql_fetch_array() –
A-OK: Sì, qualunque cosa tu preferisca. – phant0m
Sì, è possibile. È la stessa cosa, solo modi diversi di scaricarlo (nome colonna/numero colonna). –
Provate se lo mysql_data_seek() fa quello che vi serve.
mysql_data_seek() sposta il puntatore fila interna del risultato MySQL associato al risultato identificatore indicato per puntare al specificato numero di riga. La prossima chiamata a una funzione di recupero MySQL , come ad esempio mysql_fetch_assoc(), restituirebbe quella riga .
row_number inizia da 0. Il row_number dovrebbe essere un valore nell'intervallo da 0 a mysql_num_rows() - 1. Tuttavia, se il set di risultati è vuoto (mysql_num_rows() == 0), un cercare di 0 non riuscirà con un E_WARNING e mysql_data_seek() restituirà FALSE
È possibile utilizzare mysql_data_seek per spostare il puntatore interno all'inizio del set di dati. Quindi, puoi semplicemente ripetere di nuovo.
Confesso che non ho provato questo, ma hai provato dopo la tua prima iterazione
mysql_data_seek($queryresult,0);
di andare al primo record?
Beh, si può sempre contare il numero di righe che si leggono, e poi fare qualcosa di simile:
if (rownumber == mysql_num_rows($result)) { mysql_data_seek($result, 0); }
Non so perché si avrebbe bisogno di, ma è proprio così.
alternativa ai dati cercare è quello di memorizzare i valori in un array:
$arrayVals = array();
$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
$arrayVals[] = $row;
}
// Now loop over the array twice instead
$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
$row = $arrayVals[$x];
// Do something here
}
$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
$row = $arrayVals[$x];
// Do something else here
}
Ho scritto una funzione di aiuto che chiamo multiRow() che fa tutto ciò e restituisce solo una serie di righe di array. –
Per mysqli si dovrebbe effettuare le seguenti operazioni;
$result= $con->query($sql); // $con is the connection object
$result->data_seek(0);
- 1. Jquery img aggiunto attraverso append() innesca onload due volte
- 2. MySQL mostrando strano risultato
- 3. Git stash due volte
- 4. Come utilizzare JsonTextReader due volte
- 5. Il looping attraverso array non restituisce il risultato corretto
- 6. Come passare attraverso un repository git?
- 7. Android Java: come sottrarre due volte?
- 8. Come passare attraverso il codice in Google chrome javascript debugger
- 9. Come posso passare CancellationToken attraverso il confine AppDomain?
- 10. Come passare attraverso il processo di valutazione delle espressioni Python?
- 11. mysql: ordina il risultato per nome colonna
- 12. Come passare il risultato DataTable.Select() a un nuovo DataTable?
- 13. come passare il risultato della funzione ricorsiva per visualizzare
- 14. Prototypical Inheritance chiama il costruttore due volte
- 15. Negamax - il giocatore si sposta due volte
- 16. Il destinatario della trasmissione chiama due volte
- 17. Il listener del clic chiamato due volte
- 18. Chiama RenderSection due volte ...?
- 19. onTouchEvent esegue due volte
- 20. keyboardWillShow chiamato due volte
- 21. Illuminazione 2D: non far passare la luce attraverso il muro
- 22. ListSelectionListener invocato due volte
- 23. Calcola il tempo tra due volte Android
- 24. Android: utilizzare il gestore post.delayed due volte
- 25. come eseguire MySQL in Ubuntu attraverso il terminale
- 26. log4j registrazione due volte
- 27. Come iterare attraverso due oggetti IEnumerable contemporaneamente?
- 28. React.js - componentWillReceiveProps essere stato colpito due volte
- 29. didMoveToParentViewController chiamato due volte
- 30. Come accedere a Mysql :: Risultato in ActiveRecord?
Provare questa funzione che ripristina il puntatore. http://php.net/manual/en/function.mysql-data-seek.php – afarazit
Usando quale libreria MySQL? Di solito è possibile riavvolgere il puntatore interno nel set di risultati. –