Mi problema es el siguiente: tengo una BD en MYSQL y estoy usando el script YoDumpeo para exportarla a un fichero .sql, que posteriormente comprimo con el zip que trae php. El archivo se genera correctamente, y si desde phpmyadmin lo importo funciona de maravilla. El problema está en que cuando lo intento hacer desde php da error de sintaxis:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE..."
tiene pinta de tener que ver con el juego de caracteres o algo así...este es el script para rescatar:
Código PHP:
<? // Comprobación de autenticación.
if(!isset($_COOKIE['gestiona_adm']))
header("Location: ../login.php");
include_once("../config.php");
// Formateamos el directorio de copias de seguridad si existe, si no lo creamos.
if(is_dir("../copiaSeg"))
{
rmdir_recursivo("../copiaSeg");
}
else
{
mkdir("../copiaSeg");
}
// Rescatamos el fichero.
$origen = $_FILES['rutaFichero']['tmp_name'];
$destino = $GB_ABSOLUTE_PATH."/copiaSeg/bd_gestiona.zip";
move_uploaded_file($origen, $destino);
// Lo descomprimimos.
echo ">> Descomprimiendo el fichero...<br/>";
$zip = new ZipArchive;
if ($zip->open($destino) === TRUE)
{
$zip->extractTo($GB_ABSOLUTE_PATH."/copiaSeg/");
$zip->close();
echo ">> Descompresión finalizada con éxito.<br/><br/>";
// Borramos el ZIP.
unlink($destino) or die(">> Se produjo un error mientras se limpiaba el directorio.");
}
else
{
echo ">> Se produjo un error mientras se descomprimía el fichero.<br/>";
die(">> Asegurese de que el fichero se creó con el software Gestiona.<br/>");
}
echo ">> Se inició el proceso de restauración. Tenga paciencia, el proceso puede llevarle unos minutos...<br /><br />";
$link = Conectarse();
// Abrimos el directorio para ver el nombre del fichero.
if ($gestor = opendir($GB_ABSOLUTE_PATH."/copiaSeg/"))
{
while (false !== ($archivo = readdir($gestor)))
{
$seccion = explode(".", $archivo);
if($seccion[1] == "sql")
{
$handle = @fopen($GB_ABSOLUTE_PATH."/copiaSeg/".$archivo, "r");
if ($handle)
{
$consulta = "";
while(($buffer = fgets($handle)) !== false)
{
if($buffer[0] != "#")
{
$consulta.=$cadena;
}
}
if (!feof($handle))
die(">> Se produjo un error mientras se leía el fichero sql.<br />");
fclose($handle);
// Limpiamos la cadena de saltos de linea y espacios innecesarios.
echo "$consulta";
mysql_query($consulta, $link)or
die(">> Se produjo un error en la importación de la base de datos: ".mysql_error());
}
else
echo ">> Se produjo un error mientras se abría el fichero sql.<br />";
}
else
echo $seccion[1];
}
closedir($gestor);
}
echo "El proceso de restauración se completó con éxito.";
?>
PD: soy nuevo en los foros, lo siento si he creado temas repetidos o algo de eso, la verdad es que aun no entiendo bien esto d los foros. Mil gracias