Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/07/2006, 08:50
Avatar de claudiovega
claudiovega
 
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Modifiqué el script para quitar los errores, pruébalo.

Código PHP:
<?php
    $usuario 
"usuario";
    
$passwd "password";
    
$host "localhost";
    
$bd "base";
    
$nombre "dump.txt";
    
// Borrar las tablas si existen?
    
$drop false;
    
// Tablas que se exportaran
    
$tablas false;
    
// Algoritmo de compresion a usar
    
$compresion false;

    
// Conexion a la bd
    
$conexion mysql_connect($host$usuario$passwd)
    or die(
"No se conectar con el servidor MySQL: ".mysql_error());
    
mysql_select_db($bd$conexion)
    or die(
"No se pudo seleccionar la Base de Datos: "mysql_error());

    
// Se busca las tablas en la base de datos
    
if ( empty($tablas) )
    {
        
$consulta "SHOW TABLES FROM $bd;";
        
$respuesta mysql_query($consulta$conexion)
        or die(
"No se pudo ejecutar la consulta: ".mysql_error());
        while (
$fila mysql_fetch_array($respuestaMYSQL_NUM))
            
$tablas[] = $fila[0];
    }

    
// Se crea la cabecera del archivo
    
$info['dumpversion'] = "1.1b";
    
$info['fecha'] = date("d-m-Y");
    
$info['hora'] = date("h:m:s A");
    
$info['mysqlver'] = mysql_get_server_info();
    
$info['phpver'] = phpversion();
    
ob_start();
    
print_r($tablas);
    
$representacion ob_get_contents();
    
ob_end_clean ();
    
preg_match_all('/(\[\d+\] => .*)\r\n/'$representacion$matches);
    
$info['tablas'] = implode(";  "$matches[1]);

    
// La variable del dump
    
$dump"";

    foreach (
$tablas as $tabla)
    {
        
$drop_table_query "";
        
$create_table_query "";
        
$insert_into_query "";

        
// Se halla el query que será capaz vaciar la tabla.
        
if ($drop)
            
$drop_table_query "DROP TABLE IF EXISTS `$tabla`;";
        else
            
$drop_table_query "# No especificado.";

        
// Se halla el query que será capaz de recrear la estructura de la tabla.
        
$create_table_query "";
        
$consulta "SHOW CREATE TABLE $tabla;";
        
$respuesta mysql_query($consulta$conexion)
        or die(
"No se pudo ejecutar la consulta: ".mysql_error());

        while (
$fila mysql_fetch_array($respuestaMYSQL_NUM))
            
$create_table_query $fila[1].";";

        
// Se halla el query que será capaz de insertar los datos.
        
$insert_into_query "";
        
$consulta "SELECT * FROM $tabla;";
        
$respuesta mysql_query($consulta$conexion)
        or die(
"No se pudo ejecutar la consulta: ".mysql_error());
        while (
$fila mysql_fetch_array($respuestaMYSQL_ASSOC))
        {
            
$columnas array_keys($fila);
            foreach (
$columnas as $columna)
            {
                if ( 
gettype($fila[$columna]) == "NULL" )
                    
$values[] = "NULL";
                else
                    
$values[] = "'".mysql_real_escape_string($fila[$columna])."'";
            }
            
$insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", "$values).");\r\n";
            unset(
$values);
        }

        
$dump .="
        // xxx
        //xxxxx



        # | Vaciado de tabla '$tabla'
        # +------------------------------------->
        $drop_table_query


        # | Estructura de la tabla '$tabla'
        # +------------------------------------->
        $create_table_query


        # | Carga de datos de la tabla '$tabla'
        # +------------------------------------->
        $insert_into_query

        " 
;
    }

    if ( !
headers_sent() )
    {
        
header("Pragma: no-cache");
        
header("Expires: 0");
        
header("Content-Transfer-Encoding: binary");
        switch (
$compresion)
        {
            case 
"gz":
                
header("Content-Disposition: attachment; filename=$nombre.gz");
                
header("Content-type: application/x-gzip");
                echo 
gzencode($dump9);
                break;
            case 
"bz2":
                
header("Content-Disposition: attachment; filename=$nombre.bz2");
                
header("Content-type: application/x-bzip2");
                echo 
bzcompress($dump9);
                break;
            default:
                
header("Content-Disposition: attachment; filename=$nombre");
                
header("Content-type: application/force-download");
                echo 
$dump;
        }
    }
    else
        echo 
"<b>ATENCION: Probablemente ha ocurrido un error</b><br />\r\n<pre>\r\n$dump\r\n</pre>";
?>