💼 Empleos tech relacionados:
- Desarrollador(a) PHP / MySQL – Proyecto Temporal · CORPORATIVO GES.
- Sr. Backend Engineer – PHP / Magento 2 · Infojini Inc
3,326 vacantes activas en LATAM · ver todas → · ⭐ Opiniones en Google
¿En qué te ayudamos hoy?
🎓 Cursos confirmados con 50% OFF hoyInicia 26 Sep — cupo limitado para lectores del blog:
-
💬 Diplomado .NET Empresarial Desde Cero
· Inicia 26 Sep · sabatino ·
$39,990$19,995 (-50%) MXN -
💬 Visual Studio .NET Desde Cero
· Inicia 26 Sep · sabatino ·
$12,250$6,125 (-50%) MXN -
💬 Consultor AWS Despliegue de Apps
· Inicia 28 Sep · lunes - jueves ·
$8,130$4,065 (-50%) MXN
Por WhatsApp en horario habil · ver todos los cursos → · ⭐ Opiniones en Google
A menudo solemos importar nuestras bases de datos mediante una aplicación destinada a ello, como por ejemplo PHPMyAdmin. Pero también podemos desarrollar nosotros mismos una aplicación para dicho menester. Ya hemos hablado por aquí sobre cómo realizar un backup de una base de datos, pero en esta ocasión lo que haremos será importar una base de datos a través de una aplicación PHP desarrollada por nosotros mismos.
Antes que nada, tenemos que tener a nuestra disposición el archivo SQL que queramos importar en nuestra base de datos, ya sea un backup de un BD completa, o bien, una serie de sentencias que queramos ejecutar. Enviaremos esta serie de sentencias a un script de PHP mediante un formulario HTML. En el archivo PHP validaremos si el fichero enviado se trata de un fichero con la extensión .sql. Una vez validado, la función de PHP leerá el fichero y devolverá un array con las queries que se van a ejecutar. Recorreremos este array y ejecutaremos las queries una a una para importar nuestra base de datos.
Formulario 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.
<?php if (! 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; } ?>
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.
💼 Empleos tech relacionados:
- Desarrollador(a) PHP / MySQL – Proyecto Temporal · CORPORATIVO GES.
- Sr. Backend Engineer – PHP / Magento 2 · Infojini Inc
3,326 vacantes activas en LATAM · ver todas → · ⭐ Opiniones en Google



