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

Comment implémenter la sauvegarde MySQL en PHP

王林
Libérer: 2023-06-02 19:03:42
avant
1259 Les gens l'ont consulté

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
Copier après la connexion

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);
}
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal