Mysqli_fetch_assoc ($ result), o ponteiro passa para o próximo registro. Existe alguma maneira de redefinir o ponteiro para o início do resultado da consulta?

Dê uma olhada neste código

Suponha que você esteja fazendo um loop para um conjunto de resultados de consulta mysql em php

while($temp = mysqli_fetch_assoc($result)) { echo $temp['id']; // ID Column } 

Quando você faz $ temp = mysqli_fetch_assoc ($ result), basicamente o ponteiro passa para o próximo registro. Existe alguma maneira de redefinir o ponteiro para o início da consulta? Como após o fim deste loop, mysqli_fetch_assoc ($ result) retornará apenas as linhas vazias, tornando-o inutilizável novamente. Então, qual é a solução possível?

  1. Feche essa coisa de imprimir dados diretamente do loop de database. Aprenda a separar sua lógica de negócios da apresentação.
  2. Obter um invólucro de database, para livrar-se de todos esses inúmeros numerosos mysqli_fetch_assoc do seu código.
  3. O resultado da consulta da loja na matriz.
  4. Use essa matriz quantas vezes desejar.

Como isso

 $data = $db->getAll("SELECT * FROM table"); foreach ($data as $row) // 1st iteration foreach ($data as $row) // 2nd iteration foreach ($data as $row) // and so on 

Então eu estava preso com este problema no trabalho hoje, e a única solução que eu inicialmente encontrei foi re-consulta, ou use a cópia temporária do resultado mysql em uma variável. Nenhum dos quais foi atraente.

Existe uma solução muito mais simples para isso, que é mysql_data_seek.

Sintaxe básica é mysqli_data_seek (dados, linha)

Então, neste caso, você apenas faz

 mysqli_data_seek($result,0) $row=mysqli_fetch_assoc($result);// Will now return the first row. 

Da mesma forma, você pode fazer o mesmo novamente.

Funciona de forma semelhante com mysql_data_seek. Espero que tenha sido útil.