En ocasiones no se tiene acceso al panel de control o PHPMyAdmin de una cuenta de Hosting, y es necesario hacer un respaldo de la base de datos de MySQL. Ya sea por un falló a nivel técnico o simplemente por precaución.
Y por ello hoy te comparto este script que encontré en la red y he optimizado para poder respaldar la información de una base de datos MySQL usando solo PHP. Está función recibe como parámetros el: Usuario, Contraseña y nombre de tu base de datos y al final te entrega un archivo .sql que puedes descargar a tu PC.
Como siempre, si tienes alguna duda con gusto puedes dejarla en los comentarios:
Llamada a la función:
‘db_host’=> », //mysql host
‘db_uname’ => », //usuario
‘db_password’ => », //password
‘db_to_backup’ => », //nombre de la base de datos
‘db_backup_path’ => », //directorio en tu servidor donde se hará el backup
);
Función de respaldo de MySQL
Está función opera con MySQLi:
{
$mtables = array();
$mysqli = new mysqli($params[‘db_host’], $params[‘db_uname’], $params[‘db_password’], $params[‘db_to_backup’], «3306»);
die(‘Error : (‘. $mysqli->connect_errno .‘) ‘. $mysqli->connect_error);
}
$results = $mysqli->query(«SHOW TABLES»);
while($row = $results->fetch_array()){
$mtables[] = $row[0];
}
foreach($mtables as $table){
$contents .= «– Table `».$table.«` —\n«;
$results = $mysqli->query(«SHOW CREATE TABLE «.$table);
while($row = $results->fetch_array()){
$contents .= $row[1].«;\n\n«;
}
$results = $mysqli->query(«SELECT * FROM «.$table);
$row_count = $results->num_rows;
$fields = $results->fetch_fields();
$fields_count = count($fields);
$insert_head = «INSERT INTO `».$table.«` («;
for($i=0; $i < $fields_count; $i++){
$insert_head .= «`».$fields[$i]->name.«`»;
if($i < $fields_count–1){
$insert_head .= ‘, ‘;
}
}
$insert_head .= «)»;
$insert_head .= » VALUES\n«;
if($row_count>0){
$r = 0;
while($row = $results->fetch_array()){
if(($r % 400) == 0){
$contents .= $insert_head;
}
$contents .= «(«;
for($i=0; $i < $fields_count; $i++){
$row_content = str_replace(«\n«,«\\n»,$mysqli->real_escape_string($row[$i]));
switch($fields[$i]->type){
case 8: case 3:
$contents .= $row_content;
break;
default:
$contents .= «‘». $row_content .«‘»;
}
if($i < $fields_count–1){
$contents .= ‘, ‘;
}
}
if(($r+1) == $row_count || ($r % 400) == 399){
$contents .= «);\n\n«;
}else{
$contents .= «),\n«;
}
$r++;
}
}
}
if (!is_dir ( $params[‘db_backup_path’] )) {
mkdir ( $params[‘db_backup_path’], 0777, true );
}
$backup_file_name = «sql-backup-«.date( «d-m-Y–h-i-s»).«.sql»;
$fp = fopen($backup_file_name ,‘w+’);
if (($result = fwrite($fp, $contents))) {
echo «Respaldo creado. Haz clic aquí para descargar <a href=’$backup_file_name‘>Descargar </a>»;
}
fclose($fp);
}