Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/03/2013, 03:25
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: explicacion de codigo respaldar datos

En resumen:

1- SHOW TABLES te da un listado de las tablas que hay en la base de datos seleccionada y obtienes una por una con mysql_fetch_*()

2- Al recorrer cada tabla (foreach):
2.1- Selecciona todos los registros
2.2- Agrega la sentencia DROP nombre_de_tabla para eliminarla antes de crearla nuevamente
2.3- SHOW CREATE TABLE nombre_de_tabla devuelve nombre y sentencia SQL para crear la tabla con sus respectivos campos e índices
2.4- Se recorren los registros agregando la sentencia INSERT para cada uno

3- Se guardan todas las sentencias en un archivo .sql y listo!

Este tipo de scripts es útil para respaldar la base de datos si el usuario no tiene acceso a la consola MySQL, o a PhpMyAdmin o, mejor aún, para dejarlo como tarea programada y garantizar que tendrás un respaldo reciente en caso de alguna emergencia.

El único defecto que le veo es que va guardando todas las sentencias SQL en variables y podría saturar la memoria disponible para PHP. Sería mejor ir guardando cada vez, posiblemente usando file_put_contents().

Finalmente, creo que necesitas repasar el manual de PHP para las funciones mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_row, mysql_result, etc. para que veas lo que devuelve cada una de ellas y en qué forma.

Agrego otro par de defectos del script:

- Usa addslashes() en lugar de mysql_real_escape_string() para "escapar" los datos.
- Usa ereg_replace (función obsoleta) para reemplazar saltos de línea. Incluso creo que podría funcionar sin expresiones regulares un simple str_replace(), pero habrá que probarlo.
__________________
- León, Guanajuato
- GV-Foto