php - registro - Utilice la consulta dos veces mysql_fetch_array
mysql_fetch_array mysqli (5)
un simple
$stuff = mysql_query("SELECT * FROM users");
while($s = mysql_fetch_array($stuff)){
# ....
}
while($r = mysql_fetch_array($stuff)){
# ...
}
El último tiempo () no funciona. He intentado ejecutar foreach ($ cosas como $ s) pero luego obtengo un error de matriz no válido.
¿Cómo puedo usar la misma consulta dos veces?
Aquí hay otra solución más simple:
$slq = "SELECT * FROM users";
$stuff1 = mysql_query($slq);
while($s = mysql_fetch_array($stuff1)){
# ....
}
$stuff2 = mysql_query($slq);
while($r = mysql_fetch_array($stuff2)){
# ...
}
Asigne el sql a una variable, y llame a mysql varias veces.
no mas mysql usa mysqli o pdo
Si el usuario "foreach" en lugar de "while" no tendrá ningún problema y no será necesario que mysqli_seek_data ():
//1st loop :
foreach($stuff as $row)
{
echo $row[''...''];
}
...
//2nd loop :
foreach($stuff as $row)
{
echo $row[''...''];
}
ver los docs
Supongo que es porque
Devuelve una matriz que corresponde a la fila recuperada y mueve el puntero de datos interno hacia adelante .
Creo que mover el puntero de datos con mysql_data_seek () haría el trabajo. Pero creo que esta no es una buena manera, por lo general, debería recuperar datos de la base de datos una vez y almacenarlos.
$stuff = mysql_query("SELECT * FROM users");
while($s = mysql_fetch_array($stuff)){
# ....
}
// add this line
mysql_data_seek( $stuff, 0 );
while($r = mysql_fetch_array($stuff)){
# ...
}
Deberia hacer el truco
Otra forma es, por supuesto, almacenar el resultado en una matriz y reutilizarlo.
$stuff = mysql_query("SELECT * FROM users"); while($s = mysql_fetch_array($stuff)){ # .... } mysql_data_seek($stuff, 0); while($r = mysql_fetch_array($stuff)){ # ... } //ref: http://www.php.net/manual/en/function.mysql-data-seek.php