Estoy probando varias funciones en php para poder hacer copias de mi base de datos en formato .sql y descargarlas.
Uso, por ejemplo, esta función que es la que más me gusta
Código PHP:
function copiaBD()
{
$conexion = conectar();
$db = 'nombre_basedatos';
$nombre_backup = date("Y-m-d") . "-" . $db . ".sql";
// CABECERAS PARA DESCARGAR EL ARCHIVO
header( "Content-type: application/savingfile" );
header( "Content-Disposition: attachment; filename=$nombre_backup" );
header( "Content-Description: Document." );
// RECUPERO LAS TABLAS
$tablas = mysql_list_tables($db);
if (!$tablas) {
echo "Error en la base de datos: no se pueden listar las tablas \n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
// RECORRO TODAS LAS TABLAS
while ($tabla = mysql_fetch_row($tablas)) {
// RECUPERO LA INFORMACION DE CREACION DE LA TABLA
$creacion = mysql_fetch_array(mysql_query("SHOW CREATE TABLE $tabla[0]"));
echo "-- Informacion de creacion de la tabla $tabla[0]\n\n";
//echo $creacion[1]."\n\n";
echo $creacion[1];
// RECUPERO LOS NOMBRES DE LOS CAMPOS
$columnas_txt = "";
$columnas = mysql_query("SHOW COLUMNS FROM $tabla[0]");
$cantidad_columnas = mysql_num_rows($columnas);
if (mysql_num_rows($columnas) > 0) {
while ($columna = mysql_fetch_assoc($columnas)) {
$columnas_txt .= $columna['Field'] . ", ";
}
}
$columnas = substr($columnas_txt, 0, -2);
}
mysql_close($conexion);
}
Estoy trabajando con PHP y su framework XAJAX para sólo recargar un div. Entonces para conseguir que salte esta función primero creo una variable de sesión y luego recargo el index para que compruebe si esta creada esa sesión y llame a la función de copia.
Como much@s sabreis, la comprobación la tengo que hacer fuera del código HTML del index, al principio de la página, lo cual hace que se me cargue, además del código sql recuperado, toooodo el código HTML que le sigue. Y JAVASCRIPT también.
Ahora me gustaría saber cómo puedo hacer para que sólo se genere el sql de la recuperación de la base de datos.
Un saludo y gracias.