una recuperar obtener mysql_fetch_row mysql_fetch_array mysql_fetch_all ejemplos datos consulta array php mysql arrays oop object

php - recuperar - mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object



obtener datos de una consulta en php (2)

Las funciones son todas muy similares:

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object()

Recientemente comencé a usar mysql_fetch_object ya que estoy haciendo mucho más OOP con PHP.

Pero, ¿cuáles son las opiniones de las personas sobre cuál es el mejor para usar y por qué, y tal vez en qué escenario es mejor utilizarlas?

¡Gracias por tus pensamientos!


mysql_fetch_array te conseguirá una matriz que puede tener como claves:

  • ambos números y nombres de columnas, si se usa MYSQL_BOTH
  • nombres de columnas, usando MYSQL_ASSOC - en este caso, obtendrás lo mismo que obtienes al usar mysql_fetch_assoc
  • solo números (dependiendo del orden de las columnas en la consulta), si se usa MYSQL_NUM

Obtener resultados indexados por nombres de columnas es probablemente la solución más útil, más fácil de usar, al menos.

Pero obtener resultados indexados por las posiciones de los campos en la cláusula de selección es interesante en una situación: cuando tiene varias columnas que tienen el mismo nombre o alias.
En este caso, como no puede tener dos entradas con el mismo índice en una matriz, podrá acceder solo a una de esas columnas usando el nombre de columna como índice.
Para las otras columnas que tienen el mismo nombre, deberá usar índices numéricos.

Esa situación es probablemente el único caso para el que usaría mysql_fetch_array , y prefiero usar alias en mi consulta, para evitar esa situación, es más claro, en mi opinión.


mysql_fetch_assoc te proporcionará una matriz, con nombres de columnas como claves y datos como valores.

No hay mucho que decir, en realidad.


Y mysql_fetch_object te traerá objetos a cambio.


Elegir entre mysql_fetch_assoc y mysql_fetch_object probablemente dependa de cómo desarrolles tu aplicación: si usas objetos en todas partes, la segunda es probablemente la más adecuada.

Si usa matrices como contenedores de datos, puede ir con la primera.


mysql_fetch_array () obtiene una fila de resultados como una matriz asociativa, una matriz numérica o ambas. Devuelve una matriz de cadenas que corresponde a la fila recuperada, o FALSE si no hay más filas. El tipo de matriz devuelta depende de cómo se defina $ result_type.

Al usar MYSQL_NUM, solo obtiene índices de números (como $ fila [0], $ fila 1 , etc.), es decir, matriz numérica.

Al usar MYSQL_ASSOC, solo obtiene índices asociativos (como $ row ["id"], $ row ["name"], etc.) es decir, matriz asociativa.

Al usar MYSQL_BOTH (predeterminado), obtendrá una matriz con índices tanto asociativos como numéricos. (como $ row [0], $ row ["name"], etc.) es decir, matriz numérica y matriz asociativa.

mysql_fetch_assoc () obtiene una fila de resultados como una matriz asociativa. (nombres de columna como clave).

mysql_fetch_object () recupera la fila de resultados como un objeto.

Devuelve un objeto con propiedades que corresponden a la fila captada y mueve el puntero interno de datos hacia adelante.

Para mí, existen algunas ventajas de usar mysql_fetch_assoc () ya que puede usar las funciones de matriz tales como array_walk y uasort ().