ホームページ  >  記事  >  データベース  >  PHPでmysqlバックアップを実装する方法

PHPでmysqlバックアップを実装する方法

王林
王林転載
2023-06-02 19:03:421187ブラウズ

MySQL バックアップの一般的な方法

MySQL バックアップには通常 2 つの方法があります。1 つはコマンド ラインを使用してバックアップする方法、もう 1 つはビジュアル ツールを使用してバックアップする方法です。

コマンドラインによるバックアップでは、通常、mysqldump コマンドを使用します。このコマンドは、MySQL データベースを、すべてのテーブルのデータと構造を含む .sql ファイルにエクスポートできます。バックアップに mysqldump を使用するコマンドは次のとおりです:

mysqldump -u username -p dbname > backup.sql

上記のコマンドでは、username は MySQL ユーザー名、dbname はバックアップする必要があるデータベースの名前、>backup.sql は、を意味します。バックアップデータをファイル内のbackup.sqlに出力します。

バックアップにビジュアル ツールを使用するには、通常、MySQL Workbench や phpMyAdmin などのツールを使用します。これらのツールは、データベースを簡単にバックアップするための使いやすいグラフィカル インターフェイスを提供します。

この記事では、PHP 言語を使用して MySQL データベースをバックアップするコードを記述する方法を紹介します。

PHP は MySQL バックアップを実装します

MySQL データベースのバックアップは、主に、MySQL データベースへの接続とデータのエクスポートの 2 つのステップに分かれています。

1. MySQL データベースへの接続

まず、MySQL データベースに接続する必要があります。これは、PHP の組み込み mysqli または PDO 拡張機能を通じて実現できます。

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

上記のコードでは、$host は MySQL ホスト アドレス、$username は MySQL に接続されているユーザー名、$password は MySQL に接続されているユーザー パスワード、$dbname は MySQL に接続されているデータベースの名前です。バックアップする必要があります。

2. データのエクスポート

MySQL データベースに接続した後、データをエクスポートする必要があります。前述の mysqldump コマンドと同様に、各テーブルからデータと構造をエクスポートし、結果を .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);

上記のコードでは、まず SHOW TABLES ステートメントを使用してデータベース内のすべてのテーブルを取得し、次に SHOW CREATE TABLE ステートメントを使用して各テーブルの構造を取得します。次に、SELECT ステートメントを使用して各テーブルのデータを取得し、データと構造の両方をバックアップ ファイルに書き込みます。データ書き込み時の問題を防ぐために、mysqli_real_escape_string 関数を使用して文字列をエスケープします。

完全なコードは次のとおりです:

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

以上がPHPでmysqlバックアップを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。