ホームページ >データベース >mysql チュートリアル >PHPでmysqlバックアップを実装する方法
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 サイトの他の関連記事を参照してください。