Maison >base de données >tutoriel mysql >Comment implémenter la sauvegarde MySQL en PHP

Comment implémenter la sauvegarde MySQL en PHP

王林
王林avant
2023-06-02 19:03:421224parcourir

Méthodes générales de sauvegarde MySQL

Il existe généralement deux méthodes pour la sauvegarde MySQL, l'une consiste à sauvegarder via la ligne de commande et l'autre consiste à sauvegarder via un outil visuel.

La sauvegarde via la ligne de commande utilise généralement la commande mysqldump, qui peut exporter la base de données MySQL dans un fichier .sql contenant les données et la structure de toutes les tables. La commande pour utiliser mysqldump pour la sauvegarde est la suivante :

mysqldump -u username -p dbname > backup.sql

Dans la commande ci-dessus, username est le nom d'utilisateur MySQL, dbname est le nom de la base de données qui doit être sauvegardée et > backup.sql signifie afficher le fichier sauvegardé. données dans le fichier backup.sql.

L'utilisation d'outils visuels pour la sauvegarde consiste généralement à utiliser des outils tels que MySQL Workbench ou phpMyAdmin, qui fournissent une interface graphique conviviale pour sauvegarder facilement la base de données.

Et dans cet article, nous présenterons comment utiliser le langage PHP pour écrire du code pour sauvegarder la base de données MySQL.

PHP implémente la sauvegarde MySQL

La sauvegarde de la base de données MySQL est principalement divisée en deux étapes : la connexion à la base de données MySQL et l'exportation des données.

1. Connectez-vous à la base de données MySQL

Tout d'abord, nous devons nous connecter à la base de données MySQL. Ceci peut être réalisé grâce aux extensions mysqli ou PDO intégrées à PHP.

$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'dbname';

$mysqli = new mysqli($host, $username, $password, $dbname);
if ($mysqli->connect_error) {
  die('Connection failed: ' . $mysqli->connect_error);
}

Dans le code ci-dessus, $host est l'adresse de l'hôte MySQL, $username est le nom d'utilisateur connecté à MySQL, $password est le mot de passe de l'utilisateur connecté à MySQL et $dbname est le nom de la base de données qui doit être sauvegardée. .

2. Exporter les données

Après la connexion à la base de données MySQL, nous devons exporter les données. Semblable à la commande mysqldump mentionnée ci-dessus, nous devons exporter les données et la structure de chaque table et stocker les résultats dans un fichier .sql.

$tables = array();
$result = $mysqli->query("SHOW TABLES");
while ($row = $result->fetch_assoc()) {
  $tables[] = $row['Tables_in_' . $dbname];
}

$sqlFile = 'backup.sql';
$handle = fopen($sqlFile, 'w');

foreach ($tables as $table) {
  $result = $mysqli->query("SHOW CREATE TABLE $table");
  $row = $result->fetch_assoc();
  $createTableSql = $row['Create Table'] . PHP_EOL;
  fwrite($handle, $createTableSql);

  $result = $mysqli->query("SELECT * FROM $table");
  while ($row = $result->fetch_assoc()) {
    $keys = array_keys($row);
    $fields = implode(',', $keys);
    $values = array();
    foreach ($row as $key => $value) {
      $values[] = "'" . $mysqli->real_escape_string($value) . "'";
    }
    $values = implode(',', $values);
    $insertSql = "INSERT INTO $table ($fields) VALUES ($values)" . PHP_EOL;
    fwrite($handle, $insertSql);
  }
}

fclose($handle);

Dans le code ci-dessus, nous utilisons d'abord l'instruction SHOW TABLES pour obtenir toutes les tables de la base de données, puis utilisons l'instruction SHOW CREATE TABLE pour obtenir la structure de chaque table. Nous utiliserons ensuite les instructions SELECT pour récupérer les données de chaque table et écrire les données et la structure dans le fichier de sauvegarde. Nous utilisons la fonction mysqli_real_escape_string pour échapper à la chaîne afin d'éviter des problèmes lors de l'écriture des données.

Le code complet est le suivant :

$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'dbname';

$mysqli = new mysqli($host, $username, $password, $dbname);
if ($mysqli->connect_error) {
  die('Connection failed: ' . $mysqli->connect_error);
}

$tables = array();
$result = $mysqli->query("SHOW TABLES");
while ($row = $result->fetch_assoc()) {
  $tables[] = $row['Tables_in_' . $dbname];
}

$sqlFile = 'backup.sql';
$handle = fopen($sqlFile, 'w');

foreach ($tables as $table) {
  $result = $mysqli->query("SHOW CREATE TABLE $table");
  $row = $result->fetch_assoc();
  $createTableSql = $row['Create Table'] . PHP_EOL;
  fwrite($handle, $createTableSql);

  $result = $mysqli->query("SELECT * FROM $table");
  while ($row = $result->fetch_assoc()) {
    $keys = array_keys($row);
    $fields = implode(',', $keys);
    $values = array();
    foreach ($row as $key => $value) {
      $values[] = "'" . $mysqli->real_escape_string($value) . "'";
    }
    $values = implode(',', $values);
    $insertSql = "INSERT INTO $table ($fields) VALUES ($values)" . PHP_EOL;
    fwrite($handle, $insertSql);
  }
}

fclose($handle);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer