Esta es una forma práctica de recuperar una posición concreta o resetear complentamente un conjunto de resultados después de que estos ya han sido utilizados.
Por ejemplo, si recorremos el resultado de cualquier consulta con mysql_fetch_assoc() o mysql_fetch_array() cuando queramos volver a acceder a ese conjunto de resultados ya no estará disponible puesto que el puntero interno se situa en la última posición.
Con mysql_data_seek() podemos mover el puntero a la fila específicada para el identificador de resultado. Debemos indicar dos parámetros, el primero corresponde al resultado que proviene de una llamada a mysql_query() y el segundo es la posición o número de la fila deseada del nuevo resultado, la siguiente llamada a mysql_fetch_row() devolverá esa posición.
$conn = mysql_connect("localhost", "user", "pass") or die(mysql_error()); mysql_select_db("basedatos", $conn); $result = mysql_query("SELECT * FROM tabla", $conn) or die(mysql_error()); //recuperamos por primera vez el conjunto de resultados while ($row = mysql_fetch_assoc($result)) { foreach ($row as $name => $value) { $salida .= $name . ": " . $value; } } //ahora el puntero interno se encuentra al final //por lo que si queremos recuperar nuevamente los //valores de $result debemos mover de nuevo //a la posición 0 mysql_data_seek($result, 0); //ahora podemos volver a recorrer el conjunto de resultados while ($row = mysql_fetch_assoc($result)) { print_r(mysql_fetch_assoc($result)); }