Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/02/2004, 21:47
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La trancripción sería más o menos lo que puso cain ..

No hay que confundir un manejador de Base de datos que puede usar PHP .. con el própio lenguaje PHP como se suele mezclar a Access o SQL Server en ASP. PHP tiene la virtud de poder trabajar "nativamente" con váriados manejadores de base de datos entre ellos el familiar Mysql pero no es el único.

Tal vez no conozcas como funciona exactamente las funciones mysql_fetch_xxx() (array, assoc, object, row .. etc ..)

Lo que hace esa función es: por cada llamada a la función .. obtiene un "record-set" y mueve el puntero interno de la consulta una posición hacia adelante de ese record-set (consulta resultados obtenidos bajo la ejecución del SQL empleado). Al llegar al final del record-set . la función entrega un "false" por eso se usa mucho el bucle tipo while() en la forma:

Código PHP:
$consulta=mysql_query="SELECT * FROM tabla";
while(
$row=mysql_fetch_array($consulta)){
echo 
$row['nombre_campo'];

Así no es necesario andar contando el total de registros de la consulta con mysql_num_rows() ni usando mysql_data_seek() para mover el puntero interno como se haría algo así equivalente en ASP ..La función mysql_num_rows() realiza la consulta INTEGRA obteniendo internamente todo ese "record-set" y luego cuenta los registros obtenidos ... Es mucho más optimo hacerlo vía SQL con COUNT(*) (para Mysql o el SQL que corresponda para otros manejadores de BD que puedas emplear). .. El "COUNT(*)" te arroja UN sólo "recod-set" con ese total de registros. El consumo de recursos y tiempo empleado para la consulta es considerablemente menor a un mysql_num_rows() si (ojo) el objetivo final es sólo obtener ese total de registros (numero).

Si .. inmediatamente despues de ejecutar esa consulta y obtener sus datos (recor-set) no necesitas más esos datos .. puedes liberar memoria usando myslq_free_result($consulta) .. aunque PHP ya libera memoria al terminar la ejecución del script y cierra conexiones abiertas (no persistentes) a tus BD automáticamente. Pero, siempre es aconsejable liberar memoria en cuanto se pueda.

Un saludo,

PD: .. en tu código .. donde usas mysql_close($Conexion); estás cerrando la conexión .. si lo haces ahí mismo no podrás usar el resto de funciones para obtener tu record-set (mysql_fetch_xxx() ni nada más con tu BD por qué cerrastes la conexión .. debes mantenera abierta hasta que ya no la uses.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.