Imagen relacionadaFormulario HTML para importar la base de datos MySQL

Utilizaremos este código PHP para crear la interfaz que permitirá al usuario subir su fichero .sql, y así importar la base de datos. Una vez el usuario ha subido el fichero, informaremos al usuario sobre si la ejecución del fichero ha sido satisfactoria o, en caso contrario, ha habido errores.
<?phpif (! empty($response)) {
   
?>
<div class="response
<?php echo $response["type"]; ?>
    ">
   
<?php echo nl2br($response["message"]); ?>
</div>
<?php}
?>
<form method="post" action="" enctype="multipart/form-data"
   
id="frm-restore">
   
<div class="form-row">
       
<div>Choose Backup File</div>
       
<div>
           
<input type="file" name="backup_file" class="input-file" />
       
</div>
   
</div>
   
<div>
       
<input type="submit" name="restore" value="Restore"
           
class="btn-action" />
   
</div>
</form>

Código PHP para importar la base de datos MySQL

Este código PHP recibe el fichero y valida su extensión antes de procesarlo. Si el fichero no cuenta con la extensión .sql, se mostrará un error al usuario. En caso contrario, el fichero se parseará y se almacenarán todas las sentencias en un array. Después, estas sentencias se ejecutarán mediante un bucle y así, se importará la base de datos.
<?php
$conn
= mysqli_connect("localhost", "root", "test", "phppot_examples");
if (! empty($_FILES)) {
   
// Validating SQL file type by extensions
   
if (! in_array(strtolower(pathinfo($_FILES["backup_file"]["name"], PATHINFO_EXTENSION)), array(
       
"sql"
   
))) {
        $response
= array(
           
"type" => "error",
           
"message" => "Invalid File Type"
       
);
   
} else {
       
if (is_uploaded_file($_FILES["backup_file"]["tmp_name"])) {
            move_uploaded_file
($_FILES["backup_file"]["tmp_name"], $_FILES["backup_file"]["name"]);
            $response
= restoreMysqlDB($_FILES["backup_file"]["name"], $conn);
       
}
   
}
}
function restoreMysqlDB($filePath, $conn)
{
    $sql
= '';
    $error
= '';
   
   
if (file_exists($filePath)) {
        $lines
= file($filePath);
       
       
foreach ($lines as $line) {
           
           
// Ignoring comments from the SQL script
           
if (substr($line, 0, 2) == '--' || $line == '') {
               
continue;
           
}
           
            $sql
.= $line;
           
           
if (substr(trim($line), - 1, 1) == ';') {
                $result
= mysqli_query($conn, $sql);
               
if (! $result) {
                    $error
.= mysqli_error($conn) . "n";
               
}
                $sql
= '';
           
}
       
} // end foreach
       
       
if ($error) {
            $response
= array(
               
"type" => "error",
               
"message" => $error
           
);
       
} else {
            $response
= array(
               
"type" => "success",
               
"message" => "Database Restore Completed Successfully."
           
);
       
}
   
} // end if file exists
   
return $response;
}
?>