Ver Mensaje Individual
  #9 (permalink)  
Antiguo 11/07/2011, 00:34
Avatar de aniMAYtions
aniMAYtions
 
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: backup db desde script?

Con el siguiente script he conseguido que me genere el txt aparentemente correcto. Pero me imprime algo que no entiendo

Código PHP:
Ver original
  1. function copiaBD()
  2. {
  3.    
  4.    
  5. $nombre = "copia_bd.txt";
  6. /* Determina si la tabla será vaciada (si existe) cuando  restauremos la tabla. */            
  7. $drop = false;
  8. /*
  9. * Array que contiene las tablas de la base de datos que seran resguardadas.
  10. * Puede especificarse un valor false para resguardar todas las tablas
  11. * de la base de datos especificada en  $bd.
  12. *
  13. * Ejs.:
  14. * $tablas = false;
  15. *    o
  16. * $tablas = array("tabla1", "tabla2", "tablaetc");
  17. *
  18. */
  19. $tablas = false;
  20. /*
  21. * Tipo de compresion.
  22. * Puede ser "gz", "bz2", o false (sin comprimir)
  23. */
  24. $compresion = false;
  25.  
  26. /* Conexion y eso*/
  27. $conexion = conectar() or die("No se conectar con el servidor MySQL: ".mysql_error());
  28.  
  29. $bd = "basededatos";
  30. mysql_select_db($bd, $conexion) or die("No se pudo seleccionar la Base de Datos: ". mysql_error());
  31.  
  32.  
  33. /* Se busca las tablas en la base de datos */
  34. if ( empty($tablas) ) {
  35.     $consulta = "SHOW TABLES FROM $bd;";
  36.     $respuesta = mysql_query($consulta, $conexion) or die("No se pudo ejecutar la consulta: ".mysql_error());
  37.     while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) {
  38.         $tablas[] = $fila[0];
  39.     }
  40. }
  41.  
  42.  
  43. /* Se crea la cabecera del archivo */
  44. $info['dumpversion'] = "1.1b";
  45. $info['fecha'] = date("d-m-Y");
  46. $info['hora'] = date("h:m:s A");
  47. $info['mysqlver'] = mysql_get_server_info();
  48. $info['phpver'] = phpversion();
  49. print_r($tablas);
  50. $representacion = ob_get_contents();
  51. preg_match_all('/(\[\d+\] => .*)\n/', $representacion, $matches);
  52. $info['tablas'] = implode(";  ", $matches[1]);
  53. $dump = <<<EOT
  54. # +===================================================================
  55. # | COPIA DE SEGURIDAD DE LA BASE DE DATOS DE INTÉRPRETES
  56. # |
  57. # | Generado el {$info['fecha']} a las {$info['hora']} por el usurio '$usurio'
  58. # | Base de datos: '$bd'
  59. # | Tablas: {$info['tablas']}
  60. # |
  61. # +-------------------------------------------------------------------
  62.  
  63. EOT;
  64. foreach ($tablas as $tabla) {
  65.    
  66.     $drop_table_query = "";
  67.     $create_table_query = "";
  68.     $insert_into_query = "";
  69.    
  70.     /* Se halla el query que será capaz vaciar la tabla. */
  71.     if ($drop) {
  72.         $drop_table_query = "DROP TABLE IF EXISTS `$tabla`;";
  73.     } else {
  74.         $drop_table_query = "# No especificado.";
  75.     }
  76.  
  77.     /* Se halla el query que será capaz de recrear la estructura de la tabla. */
  78.     $create_table_query = "";
  79.     $consulta = "SHOW CREATE TABLE $tabla;";
  80.     $respuesta = mysql_query($consulta, $conexion)
  81.     or die("No se pudo ejecutar la consulta: ".mysql_error());
  82.     while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) {
  83.             $create_table_query = $fila[1].";";
  84.     }
  85.    
  86.     /* Se halla el query que será capaz de insertar los datos. */
  87.     $insert_into_query = "";
  88.     $consulta = "SELECT * FROM $tabla;";
  89.     $respuesta = mysql_query($consulta, $conexion)
  90.     or die("No se pudo ejecutar la consulta: ".mysql_error());
  91.     while ($fila = mysql_fetch_array($respuesta, MYSQL_ASSOC)) {
  92.             $columnas = array_keys($fila);
  93.             foreach ($columnas as $columna) {
  94.                 if ( gettype($fila[$columna]) == "NULL" ) {
  95.                     $values[] = "NULL";
  96.                 } else {
  97.                     $values[] = "'".mysql_real_escape_string($fila[$columna])."'";
  98.                 }
  99.             }
  100.             $insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", ", $values).");\n";
  101.             unset($values);
  102.     }
  103.    
  104. $dump .= <<<EOT
  105.  
  106. # | Vaciado de tabla '$tabla'
  107. # +------------------------------------->
  108. $drop_table_query
  109.  
  110.  
  111. # | Estructura de la tabla '$tabla'
  112. # +------------------------------------->
  113. $create_table_query
  114.  
  115.  
  116. # | Carga de datos de la tabla '$tabla'
  117. # +------------------------------------->
  118. $insert_into_query
  119.  
  120. EOT;
  121. }
  122.  
  123. /* Envio */
  124. if ( !headers_sent() ) {
  125.     header("Pragma: no-cache");
  126.     header("Expires: 0");
  127.     header("Content-Transfer-Encoding: binary");
  128.     switch ($compresion) {
  129.     case "gz":
  130.         header("Content-Disposition: attachment; filename=$nombre.gz");
  131.         header("Content-type: application/x-gzip");
  132.         echo gzencode($dump, 9);
  133.         break;
  134.     case "bz2":
  135.         header("Content-Disposition: attachment; filename=$nombre.bz2");
  136.         header("Content-type: application/x-bzip2");
  137.         echo bzcompress($dump, 9);
  138.         break;
  139.     default:
  140.         header("Content-Disposition: attachment; filename=$nombre");
  141.         header("Content-type: application/force-download");
  142.         echo $dump;
  143.     }
  144. } else {
  145.     echo "<b>ATENCION: Probablemente ha ocurrido un error</b><br />\n<pre>\n$dump\n</pre>";
  146. }
  147. }

Me imprime correctamente la copia de seguridad. Pero al final de este código también me imprime el javascript con el que consulto a la base de datos para los combos anidados.
Alguien puede decirme dónde está la orden para que me haga eso??
Gracias!!

Última edición por aniMAYtions; 11/07/2011 a las 02:49