ホームページ  >  記事  >  バックエンド開発  >  PHPでデータベーステーブルを自動的にバックアップする方法

PHPでデータベーステーブルを自動的にバックアップする方法

小云云
小云云オリジナル
2018-02-01 10:07:031292ブラウズ

PHPでデータベーステーブルを自動的にバックアップするにはどうすればよいですか?この記事では、PHP を使用してデータベース テーブルを自動的にバックアップする方法を皆さんの参考として紹介します。お役に立てれば幸いです。

1. mysql データベースをバックアップするには、さまざまな方法があります。

1. mysqldump 関数を使用します

mysqldump -p dbname table2... >

dbname パラメータの表現

table1 および table2 パラメータは、バックアップする必要があるテーブルの名前を表します。これらが空の場合、データベース全体がバックアップされます。

BackupName.sql パラメータ テーブルが設計されています。ファイル名の前に絶対パスを追加できます。データベースは通常、

という接尾辞が付いたファイルに分割されます。基本的な使用法:

2. 管理ツール

データベースをバックアップする方法は数多くありますが、上記の 2 つがより一般的です

今回はphp関数でデータベースを自動バックアップする方法

2.関連関数の紹介

2.1、fopen

2.2、array_keys

2.3、array_values

を中心に説明します。

2.4、implode

2.5、substr

2.6、fwrite

3. コード構成

/**
 * [copyDb description] 备份数据库
 * @param [type] $dbname [description] 数据库名
 * @param [type] $fileName [description] 存储的文件名
 * @return [type]   [description]
 */
public function copyDb($dbname, $fileName){
	$myfile = fopen($fileName, "w") or die("Unable to open file!");//打开存储文件
	$this->link->query("use {$dbname}");//切换数据库
	$this->changeDb($dbname);
	$tables = $this->link->query('show tables');//获取当期数据库所有表名称
	while($re = $tables->fetch(PDO::FETCH_ASSOC)){
		//var_dump($re);//查看数组构成
		$tableName = $re['Tables_in_'.$dbname];//构成特定的下标
		$sql = "show create table {$tableName};";
		$tableSql = $this->link->query($sql);

		fwrite($myfile, "DROP TABLE IF EXISTS `{$tableName}`;\r\n");//加入默认删除表的遇见
		//下面备份表结构,这个循环之执行一次
		while($re = $tableSql->fetch(PDO::FETCH_ASSOC)){
			// echo "<pre class="brush:php;toolbar:false">";
			// var_dump($re);
			// echo "
"; echo "正在备份表{$re['Table']}结构
"; fwrite($myfile, $re['Create Table'].";\r\n\r\n"); echo "正在备份表{$re['Table']}结构完成
"; } //下面备份表数据 echo "正在备份表{$tableName}数据
"; $sql = "select * from {$tableName};"; $valueSql = $this->link->query($sql); while($re = $valueSql->fetch(PDO::FETCH_ASSOC)){ $keyArr = array_keys($re);//获得对应的键值 $valueArr = array_values($re);//获得对应的值 $keyStr = ''; foreach ($keyArr as $key => $value) { $keyStr .= "`".$value."`,"; } $keyStr = substr($keyStr,0,strlen($keyStr)-1); //取出最后一个逗号 $valueStr = ''; // var_dump($valueArr); foreach ($valueArr as $key => $value) { $valueStr .= "'".$value."',"; } //以上的处理只是对应sql的写法 $valueStr = substr($valueStr,0,strlen($valueStr)-1); //取出最后一个逗号 $sql = "insert into `{$tableName}`({$keyStr}) values({$valueStr})"; fwrite($myfile, $sql.";\r\n\r\n"); } echo "正在备份表{$tableName}数据完成
"; echo "

"; } fclose($myfile); }5.結論

の主なプロセスデータベースのバックアップ:

対応するデータベースに切り替えます。

show create table tableName を使用してテーブル構造を取得し、ファイルに書き込みます。

その後、すべてのテーブル データをクエリし、対応する SQL ステートメントを生成して書き込みます。ファイルにコピーします。

生成された SQL ファイルを実行してみます。

関連する推奨事項:

Navicat for MySQL のスケジュールされたデータベース バックアップとデータ リカバリ操作

PHP を使用して自動データベース バックアップを実装する方法

PHP を使用してデータベーステーブルを自動的にバックアップするグラフィカルコードの紹介

以上がPHPでデータベーステーブルを自動的にバックアップする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。