PHP 8.4.1 Released!

mysql_data_seek

(PHP 4, PHP 5)

mysql_data_seekMueve el puntero de resultados interno

Advertencia

Esta extensión fue declarada obsoleta en PHP 5.5.0 y eliminada en PHP 7.0.0. En su lugar debería utilzarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API. Las alternativas a esta función son:

Descripción

mysql_data_seek(resource $result, int $row_number): bool

mysql_data_seek() mueve el puntero de filas interno del resultado de MySQL asociado con el identificador de resultado especificado para apuntar al número de fila especificada. La siguiente llamada a una función de obtención de MySQL, tal como mysql_fetch_assoc(), devolverá esa fila.

row_number empieza en 0. row_number debería ser un valor en el rango de 0 a mysql_num_rows() -1. Sin embargo, si el conjunto de resultados esta vacío (mysql_num_rows() == 0), una búsqueda a 0 fallará con un E_WARNING y mysql_data_seek() devolverá false.

Parámetros

result

El resultado resource que está siendo evaluado. Este resultado proviene de una llamada a mysql_query().

row_number

Número de la fila deseada del puntero de resultados nuevo.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de mysql_data_seek()

<?php
$enlace
= mysql_connect('localhost', 'usuario_mysql', 'contraseña_mysql');
if (!
$enlace) {
die(
'No pudo conectarse: ' . mysql_error());
}
$bd_seleccionada = mysql_select_db('bd_muestra');
if (!
$bd_seleccionada) {
die(
'La base de datos no pudo seleccionarse: ' . mysql_error());
}
$consulta = 'SELECT apellido, nombre FROM amigos';
$resultado = mysql_query($consulta);
if (!
$resultado) {
die(
'La consulta falló: ' . mysql_error());
}
/* obtención de filas en orden inverso */
for ($i = mysql_num_rows($resultado) - 1; $i >= 0; $i--) {
if (!
mysql_data_seek($resultado, $i)) {
echo
"No se encuenta la fila $i: " . mysql_error() . "\n";
continue;
}

if (!(
$fila = mysql_fetch_assoc($resultado))) {
continue;
}

echo
$fila['apellido'] . ' ' . $fila['nombre'] . "<br />\n";
}

mysql_free_result($resultado);
?>

Notas

Nota:

La función mysql_data_seek() puede ser usada solamente junto con mysql_query(), y no con mysql_unbuffered_query().

Ver también

add a note

User Contributed Notes 4 notes

up
6
kennethnash1134 at yahoo dot com
20 years ago
/*here is a nice function for converting a mysql result row set into a 2d array, a time saver if need small data from several rows, saves you from having to do Alot of queries... would be nice to have this built into PHP future versions :) */

// simple example query
$r=mysql_query("select user,id,ip from accounts limit 10");

//starts the for loop, using mysql_num_rows() to count total
//amount of rows returned by $r
for($i=0; $i<mysql_num_rows($r); $i++){
//advances the row in the mysql resource $r
mysql_data_seek($r,$i);
//assigns the array keys, $users[row][field]
$users[$i]=mysql_fetch_row($r);
}

//simple, hope someone can use it :)
// -Kenneth Nash
up
2
arturo_b at hotmail dot com
19 years ago
hello, this script would be easy to understand for those that are novice in php whose want to understand about this function:

the table "user" have 2 columns "id" and "name".
"user" content:
position 0: "id"=195342481 "name"='Arthur'
position 1: "id"=179154675 "name"='John'
>>position 2<<: "id"=157761949 "name"='April' >>third row<<
position 3: "id"=124492684 "name"='Tammy'
position 4: "id"=191346457 "name"='Mike'

<?php
mysql_connect
("localhost", "root")
mysql_select_db("test");
$sql = mysql_query("select * from user");
mysql_data_seek($sql, 2);
echo
"<table border=1>";
while (
$row = mysql_fetch_row($sql)){
echo
"<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}
echo
"</tabla>";
?>

explanation:
mysql_data_seek move internal result pointer to the third row of table user. Thus mysql_fetch_row will begin by april?s row.
up
1
saeed at photobookworldwide dot com
12 years ago
Here, you can find the current pointer of selected row easily:

<?php
//selected row with id=4
$id = "4";

$result = mysql_query("select * from jos_components");

$num = mysql_num_rows($result);

for(
$i=0;$i<$num;$i++){

mysql_data_seek($result,$i);

$row = mysql_fetch_assoc($result);

if(
$row['id'] == $id){

$pointer = $i;
}


}

// current pointer for selected row
echo $pointer;
?>
up
-2
b.steinbrink at g m x dot de
19 years ago
to kennethnash1134 at yahoo dot com

your loop can be done like this as well and i guess this is faster:

$r=mysql_query("select user,id,ip from accounts limit 10");

unset($users); // Just to be sure
while($users[] = mysql_fetch_row);
array_pop($users); // Drop the last entry which is FALSE
To Top