PHP 8.4.3 Released!

mysql_fetch_array

(PHP 4, PHP 5)

mysql_fetch_arrayRecupera una fila de resultados como un array asociativo, un array numérico o como ambos

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_fetch_array(resource $result, int $result_type = MYSQL_BOTH): array

Devuelve un array que corresponde a la fila recuperada y mueve el puntero de datos interno hacia delante.

Parámetros

result

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

result_type

El tipo de array que va a ser devuelto. Es una constante y puede tomar los siguientes valores: MYSQL_ASSOC, MYSQL_NUM, y MYSQL_BOTH.

Valores devueltos

Devuelve un array de cadenas que corresponde a la fila recuperada, o false si no hay más filas. El tipo del array retornado depende de como esté definido result_type. Al utilizar MYSQL_BOTH (predeterminado), se obtendrá un array con ambos índices: asociativos y numéricos. Al utilizar MYSQL_ASSOC, se obtienen solo los índices asociativos (tal como funciona mysql_fetch_assoc()). Al utilizar MYSQL_NUM, se obtienen solo los índices numéricos (tal como funciona mysql_fetch_row()).

Si dos o más columnas del resultado tienen el mismo nombre de campo, la última columna tomará precedencia. Para acceder a la/s otra/s columna/s con el mismo nombre, se deberá usar el índice numérico de la columna o crear un alias para la columna. Para las columnas con alias, no se puede acceder al contenido con el nombre de la columna original.

Ejemplos

Ejemplo #1 Consulta con nombres de campos duplicados con alias

SELECT tabla1.campo AS foo, tabla2.campo AS bar FROM tabla1, tabla2

Ejemplo #2 mysql_fetch_array() con MYSQL_NUM

<?php
mysql_connect
("localhost", "usuario_mysql", "contraseña_mysql") or
die(
"No se pudo conectar: " . mysql_error());
mysql_select_db("mibd");

$resultado = mysql_query("SELECT id, nombre FROM mitabla");

while (
$fila = mysql_fetch_array($resultado, MYSQL_NUM)) {
printf("ID: %s Nombre: %s", $fila[0], $fila[1]);
}

mysql_free_result($resultado);
?>

Ejemplo #3 mysql_fetch_array() con MYSQL_ASSOC

<?php
mysql_connect
("localhost", "usuario_mysql", "contraseña_mysql") or
die(
"No se pudo conectar: " . mysql_error());
mysql_select_db("mibd");

$resultado = mysql_query("SELECT id, nombre FROM mitabla");

while (
$fila = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
printf("ID: %s Nombre: %s", $fila["id"], $fila["nombre"]);
}

mysql_free_result($resultado);
?>

Ejemplo #4 mysql_fetch_array() con MYSQL_BOTH

<?php
mysql_connect
("localhost", "usuario_mysql", "contraseña_mysql") or
die(
"No se pudo conectar: " . mysql_error());
mysql_select_db("mibd");

$resultado = mysql_query("SELECT id, nombre FROM mitabla");

while (
$fila = mysql_fetch_array($resultado, MYSQL_BOTH)) {
printf ("ID: %s Nombre: %s", $fila[0], $fila["nombre"]);
}

mysql_free_result($resultado);
?>

Notas

Nota: Rendimiento

Una cosa importante a tener en cuenta es que el uso de mysql_fetch_array() no es significativamente más lento que el uso de mysql_fetch_row(), aunque provee un valor añadido considerable.

Nota: Los nombres de los campos devueltos por esta función son sensibles a mayúsculas y minúsculas.

Nota: Esta función define campos NULOS al valor null de PHP.

Ver también

add a note

User Contributed Notes 2 notes

up
17
robjohnson at black-hole dot com
22 years ago
Benchmark on a table with 38567 rows:

mysql_fetch_array
MYSQL_BOTH: 6.01940000057 secs
MYSQL_NUM: 3.22173595428 secs
MYSQL_ASSOC: 3.92950594425 secs

mysql_fetch_row: 2.35096800327 secs
mysql_fetch_assoc: 2.92349803448 secs

As you can see, it's twice as effecient to fetch either an array or a hash, rather than getting both. it's even faster to use fetch_row rather than passing fetch_array MYSQL_NUM, or fetch_assoc rather than fetch_array MYSQL_ASSOC. Don't fetch BOTH unless you really need them, and most of the time you don't.
up
8
KingIsulgard
16 years ago
I have found a way to put all results from the select query in an array in one line.

// Read records
$result = mysql_query("SELECT * FROM table;") or die(mysql_error());

// Put them in array
for($i = 0; $array[$i] = mysql_fetch_assoc($result); $i++) ;

// Delete last empty one
array_pop($array);

You need to delete the last one because this will always be empty.

By this you can easily read the entire table to an array and preserve the keys of the table columns. Very handy.
To Top