Cómo restaurar una base de datos MySQL desde un SQL con PHP

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);

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP