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($respuesta, MYSQL_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($respuesta, MYSQL_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($respuesta, MYSQL_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($dump, 9);
break;
case "bz2":
header("Content-Disposition: attachment; filename=$nombre.bz2");
header("Content-type: application/x-bzip2");
echo bzcompress($dump, 9);
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>";
?>