Por alguna razón, necesito pasar por un resultado mysql establecido dos veces. ¿Hay una manera de hacerlo? No quiero ejecutar la consulta dos veces y no quiero tener que reescribir el script para que almacene las filas en algún lugar y luego las reutilice más adelante.¿Cómo pasar por mysql resultado dos veces?
Respuesta
Ésta es la forma en que puede hacerlo:
$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...
}
Sin embargo, tendría que decir, esto no parece la manera correcta de manejar esto. ¿Por qué no hacer el procesamiento dentro del primer ciclo?
por qué mysql_fetch_assoc()? puedo usar mysql_fetch_array() –
A-OK: sí, lo que prefiera. – phant0m
Sí, puedes. Es lo mismo, solo formas diferentes de buscarlo (nombre de columna/número de columna). –
Pruebe si mysql_data_seek() hace lo que necesita.
mysql_data_seek() mueve el puntero interno fila del resultado MySQL asociado con el identificador de resultado especificado para que apunte al número de fila especificada . La siguiente llamada a una función de búsqueda MySQL , como mysql_fetch_assoc(), devolvería esa fila .
row_number comienza en 0. El row_number debería ser un valor en el intervalo de 0 a mysql_num_rows() - 1. Sin embargo, si el conjunto de resultados está vacía (mysql_num_rows() == 0), un buscará 0 fallará con un E_WARNING y mysql_data_seek() devolverá FALSE
Puede usar mysql_data_seek para mover el puntero interno al comienzo del conjunto de datos. Luego, puede iterar nuevamente a través de él.
Confieso que no he probado esto, pero ¿ha intentado después de su primera iteración
mysql_data_seek($queryresult,0);
para ir al primer registro?
Bueno, siempre podía contar el número de filas que lee, y luego hacer algo como esto:
if (rownumber == mysql_num_rows($result)) { mysql_data_seek($result, 0); }
No sabe por qué tendría que hacerlo, pero no lo es.
alternativa a los datos buscan es almacenar los valores en una matriz:
$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
}
Escribí una función auxiliar que llamo multiRow() que hace todo eso y solo devuelve un array de filas de matriz. –
Para mysqli que debe hacer lo siguiente;
$result= $con->query($sql); // $con is the connection object
$result->data_seek(0);
- 1. ¿Por qué WebBrowser_DocumentCompleted() se activa dos veces?
- 2. MySQL - ¿Cómo SUMAR veces?
- 3. Necesito realizar la ORDEN por dos veces
- 4. ¿Por qué javac checkcast arrays dos veces?
- 5. ¿Por qué EAAccessoryDidConnectNotification se produce dos veces?
- 6. ¿Por qué onKey() se llama dos veces?
- 7. Cómo utilizar JsonTextReader dos veces
- 8. Android Java: ¿Cómo restar dos veces?
- 9. applicationDidBecomeActive llamarse dos veces
- 10. log4j registrando dos veces
- 11. Liberar memoria dos veces
- 12. WP7: navegue dos veces
- 13. UIGestureRecognizer ¿disparando dos veces?
- 14. keyboardWillShow llamado dos veces
- 15. Biblioteca estática cargada dos veces
- 16. php json_encode mysql resultado
- 17. onTouchEvent se ejecuta dos veces
- 18. LINQ agrupando datos dos veces
- 19. PHP MySQL Orden por dos columnas
- 20. Cómo comparar dos veces en PHP
- 21. ¿Cómo puedo usar __DATA__ dos veces?
- 22. Cómo combinar dos expresiones: resultado = exp1 (exp2);
- 23. Lea la secuencia dos veces
- 24. ¿Llamar a RenderSection dos veces ...?
- 25. restar dos veces en pitón
- 26. Uso consulta mysql_fetch_array dos veces
- 27. ¿Por qué Spring Context se carga dos veces?
- 28. ¿Reproduce un AudioBufferSourceNode dos veces?
- 29. ¿Cómo acceder a Mysql :: Resultado en ActiveRecord?
- 30. excepción se detecta dos veces
Pruebe esta función que restablece el puntero. http://php.net/manual/en/function.mysql-data-seek.php – afarazit
¿Usando qué biblioteca MySQL? Por lo general, puede rebobinar el puntero interno en el conjunto de resultados. –