Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/06/2008, 09:36
VCR
 
Fecha de Ingreso: febrero-2008
Mensajes: 5
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problema al guardar consulta en fichero

Este es el codigo en cuestión. El script funciona correctamente, ya que si pongo que muestre en pantalla el contenido de la variable $Contenido, que es donde se guardan el código SQL, se muestra todo, pero al guardarlo en un fichero, solo se guarda parte...




<?php

include("config.php");

$Archivo=date(" Y\-m\-d") . "-".$dominio."-backup" . ".sql";
//podeis poner el nombre de archivo que querais con la extension que os de la gana
$EliminarTablas = false; //aqui poned si quereis que se elimen las tablas si existen

//Conectar con la base de datos
$Conexion = mysql_connect($Servidor, $Usuario, $Password);
mysql_select_db($BaseDeDatos, $Conexion);

$ListaTablas = mysql_listtables($BaseDeDatos);
For ($Numero = 0; $Numero < mysql_num_rows ($ListaTablas); $Numero++) {
$Tablas[] = mysql_tablename ($ListaTablas, $Numero);
$Querys .= CrearQuerys($Conexion, $Tablas[$Numero], $EliminarTablas);}


Function CrearQuerys($Conexion, $Tabla, $EliminarTablas) {
// Query que elimina las tablas si existen
if ($EliminarTablas) {
$QueryEliminarTabla = "DROP TABLE IF EXISTS `$Tabla`;";
}

// Query que crea la estructura de la tabla
$sql= "SHOW CREATE TABLE $Tabla;";
$Respuesta = mysql_query($sql, $Conexion);
$ArrayRespuesta = mysql_fetch_array($Respuesta);
$QueryEstructuraTabla = $ArrayRespuesta[1].";";

// Query que introduce los datos en la tabla
$sql = "SELECT * FROM $Tabla;";
$Respuesta = mysql_query($sql, $Conexion);
while ($Fila = mysql_fetch_array($Respuesta, MYSQL_ASSOC)) {
$Columnas = array_keys($Fila);
foreach ($Columnas as $Columna) {
if ( gettype($Fila[$Columna]) == "NULL" ) {
$Valores[] = "NULL";
} else {
$Valores[] = "'".$Fila[$Columna]."'";
}
}
$QueryInsertarDatos .= "INSERT INTO `$Tabla` VALUES (".implode(", ", $Valores).");\n";
unset($Valores);
}
$Contenido = <<<EOT
$QueryEstructuraTabla
$QueryInsertarDatos
EOT;

$file = "bck.sql";
$fo = fopen($file,"w+");
fwrite($fo,$Contenido);
fclose($fo);
}
?>

Última edición por VCR; 05/06/2008 a las 09:44