2009-10-08 23 views
13

Las funciones son muy similares:mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object() 

Recientemente han empezado a utilizar mysql_fetch_object como lo estoy haciendo mucho más programación orientada a objetos con PHP.

Pero ¿cuáles son los pueblos comentarios sobre cuál es el mejor para usar y por qué, y tal vez cuál es el escenario que son los mejores para ser utilizados en.

Gracias por sus pensamientos!

+2

De acuerdo con esto, es más rápido Assoc. http://www.spearheadsoftwares.com/tutorials/php-performance-benchmarking/50-mysql-fetch-assoc-vs-mysql-fetch-array-vs-mysql-fetch-object – Erick

Respuesta

14

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

  • ambos números y nombres de las columnas, si se utiliza MYSQL_BOTH
  • nombres de columnas, utilizando MYSQL_ASSOC - en este caso, obtendrá lo mismo que se obtiene al utilizar mysql_fetch_assoc
  • sólo números (dependiendo del orden de las columnas en la consulta), si se utiliza 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 select 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 utilizando 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 obtendrá una matriz, con nombres de columnas como claves y datos como valores.

No hay mucho que decir, en realidad.


Y mysql_fetch_object le traerán objetcs a cambio.


La elección entre mysql_fetch_assoc y mysql_fetch_object muy probablemente dependerá de cómo se desarrolla su aplicación: si el uso de objetos de todo el mundo, el segundo es probablemente el más adecuado.

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

1

mysql_fetch_array() recupera 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.

Mediante el uso de MYSQL_ASSOC, que sólo te dan índices asociativos (como $ row [ "id"], $ fila [ "nombre"], etc.), es decir, matriz asociativa.

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

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

mysql_fetch_object() recupera la fila del resultado como un objeto.

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

Para mí no son Adantages de la utilización de mysql_fetch_assoc() en que puede utilizar las funciones de matriz tales como array_walk y uasort().

0

Breve descripción:

mysql_fetch_assoc(): Esta se obtiene una matriz asociativa de datos.

mysql_fetch_array(): Esto devuelve una matriz combinada de elementos asociativos, así como datos con índice numérico.

mysql_fetch_object(): Devuelve un objeto con propiedades que corresponden a la fila recuperada.

Source

Cuestiones relacionadas