Dummy-X

Informatica a portata di tutti

Eseguire il backup di un database MySQL con PHP

5 Ottobre 2018 / DEV / 54 visualizzazioni
Scritto da  

Uno script per salvare le tabelle del nostro database, funzionante con PHP 7

La premura più importante che deve avere un webmaster è quella di eseguire continui backup dello spazio web che gestisce, sia lato file che lato database. Per quanto riguarda i file basta utilizzare un qualunque client ftp, ma per quanto riguarda il database non sempre si ha la possibilità di utilizzare client in locale.

Per agevolare la procedura di backup è possibile utilizzare il seguente script

<?php
function backup_tables($host,$user,$pass,$name,$tables = '*') {

$link = mysqli_connect($host,$user,$pass,$name);
$handle = fopen('db-backup-'.$name.'-'.time().'-'.(md5(time())).'.sql','w+');

if($tables == '*'){
  $tables = array();
  $result = mysqli_query($link,'SHOW TABLES');
  while($row = mysqli_fetch_row($result)) {
  $tables[] = $row[0];
  }
} else {
  $tables = is_array($tables) ? $tables : explode(',',$tables);
}
$return='';
foreach($tables as $table) {
  $result = mysqli_query($link,'SELECT * FROM '.$table);
  $num_fields = mysqli_num_fields($result);
  $return.= 'DROP TABLE '.$table.';';
  $row2 = mysqli_fetch_row(mysqli_query($link,'SHOW CREATE TABLE '.$table));
  $return.= "\n\n".$row2[1].";\n\n";
  fwrite($handle,$return);
  for ($i = 0; $i < $num_fields; $i++) {
  while($row = mysqli_fetch_row($result)) {
  $return= 'INSERT INTO '.$table.' VALUES(';
  for($j=0; $j < $num_fields; $j++) {
  $row[$j] = addslashes($row[$j]);
  $row[$j] = preg_replace("/\n/","/\\n/",$row[$j]);
  if (isset($row[$j])) {
  $return.= '"'.$row[$j].'"';
  } else {
  $return.= '""';
  }
  if ($j < ($num_fields-1)) {
  $return.= ',';
  }
  }
  $return.= ");\n";
  fwrite($handle,$return);
  }
  }
  }
  mysqli_close($link);
  fwrite($handle,$return);
  fclose($handle);
}
?>

che si occupa di generare lo script sql della creazione e il popolamento di ogni singola tabella del database indicato nei parametri di input. Ci basta pianificare un job che richiami il nostro script php contenente anche le istruzioni per spedirci l’sql per mail ed il gioco è fatto.

Condividi se l'articolo ti è piaciuto, ci aiuterai a crescere
Francesco
Fondatore e amministratore di Dummy-X dal 2007, condivido interessi, idee, progetti, e soluzioni informatiche. Non vendo prodotti, mi limito a descrivere tecnologie e a mettere a disposizione gli strumenti adatti per poter realizzare idee. Tutto ciò che scrivo è frutto della mia esperienza lavorativa e della mia voglia di imparare. Da sempre studio l'informatica in tutte le sue angolazioni (software, hardware, reti e sicurezza) e negli ultimi anni mi sono specializzato nello sviluppo di web applications. Sono sempre aperto a nuove sfide e alla ricerca e conoscenza delle nuove tecnologie.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *