La forma que estoy usando es la del manual (donde dice "Estilo por procesos"):
http://php.net/manual/es/mysqli.multi-query.php
Digamos que no paso de esta linea: if(mysqli_multi_query($installDataBase, $backupSource)){
La cuestion está en la base de datos seguro. La exporto con un script. Y no la puedo instalar con ese otro script. Pero si le quito algunas consultas entonces si la puedo intalar, así que el problema aparentemente está en la exportación.
Este es mi escript para exportar:
Código PHP:
// directory
$directory = "downloads/";
// conection
include "conection.php";
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
$return = "";
//cycle through
foreach($tables as $table)
{
$return.= 'DROP TABLE IF EXISTS '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$file = 'aoiManual-backup-'.date("Y-m-d").'.sql'; //.'-'.(md5(implode(',',$tables)))
$handle = fopen($directory.$file,'w+');
fwrite($handle,$return);
fclose($handle);
El problema estará en las comillas?. Creo que sí. Pero si no es eso, es por los caracteres alemanes.
Como sea, usando phpmyadmin importa bien. Que puedo hacer para que desde PHP tambien pueda insertar todos los datos?