Generalmente, solemos utilizar phpMyAdmin para importar o restaurar bases de datos a través de un fichero SQL. Pero esta no es la única opción para importar un fichero SQL, existen muchas más. Como por ejemplo, puedes restaurar una base de datos a través de un fichero SQL desde un script PHP sin tener que hacer login en tu servidor o en phpMyAdmin.
Restaurar una base de datos a través de un script PHP es la mar de útil cuando quieres que sea el usuario el que lo haga a través de la misma aplicación web. En este tutorial te mostraremos cómo restaurar una base de datos MySQL desde un SQL mediante PHP.
Restaurando una base de datos utilizando PHP
Para mayor comodidad, hemos agrupado todo el código PHP en la función restoreDatabaseTables(). Mediante la función restoreDatabaseTables() de PHP, podrás restaurar tablas en una base de datos a través de un fichero sql. La función contará con estos parámetros obligatorios:
- $dbHost: Obligatorio. Define el host de la base de datos
- $dbUsername: Obligatorio. Define el usuario de la base de datos
- $dbPassword: Obligatorio. Define la contraseña de la base de datos
- $dbName: Obligatorio. Define el nombre de la base de datos que quieres restaurar
- $filePath: Obligatorio. Define la ruta del fichero SQL que cogeremos para restaurar la base de datos
function restoreDatabaseTables($dbHost, $dbUsername, $dbPassword, $dbName, $filePath){ // Connect & select the database $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); // Temporary variable, used to store current query $templine = ''; // Read in entire file $lines = file($filePath); $error = ''; // Loop through each line foreach ($lines as $line){ // Skip it if it's a comment if(substr($line, 0, 2) == '--' || $line == ''){ continue; } // Add this line to the current segment $templine .= $line; // If it has a semicolon at the end, it's the end of the query if (substr(trim($line), -1, 1) == ';'){ // Perform the query if(!$db->query($templine)){ $error .= 'Error performing query "<b>' . $templine . '</b>": ' . $db->error . '<br /><br />'; } // Reset temp variable to empty $templine = ''; } } return !empty($error)?$error:true; }
Uso
Utiliza de este modo la función restoreDatabaseTables() para restaurar una base de datos mediante un fichero SQL.
$dbHost = 'localhost'; $dbUsername = 'root'; $dbPassword = 'root'; $dbName = 'databaseName'; $filePath = 'files/yourMysqlBackupFile.sql'; restoreDatabaseTables($dbHost, $dbUsername, $dbPassword, $dbName, $filePath);