Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie eine automatische Datenbanksicherung in PHP

So implementieren Sie eine automatische Datenbanksicherung in PHP

炎欲天舞
炎欲天舞Original
2017-08-03 16:54:372822Durchsuche

So verwenden Sie PHP zum automatischen Sichern der Datenbank


1. Vorwort

Es gibt viele Möglichkeiten, eine MySQL-Datenbank zu sichern;

Zum Beispiel:

1. Verwenden Sie die mysqldump-Funktion

mysqldump -u username -p dbname table1 table2 ...  > BackupName.sql


  1. dbname-Parameter stellt die Datenbank dar. Die name

  2. table1- und table2-Parameter stellen die Namen der Tabellen dar, die gesichert werden müssen. Wenn sie leer sind, wird die gesamte Datenbank gesichert gesichert;

  3. BackupName.sql-Parametertabelle Entwerfen Sie den Namen der Sicherungsdatei. Sie können einen absoluten Pfad vor dem Dateinamen hinzufügen. Die Datenbank ist normalerweise in eine Datei mit dem Suffix sql unterteilt;

Grundlegende Verwendung:

2. Verwaltungstools

Es gibt viele Möglichkeiten, die Datenbank zu sichern, die beiden oben genannten sind häufiger anzutreffen

Diesmal hauptsächlich Erklären Sie, wie Sie PHP-Funktionen aus der automatischen Sicherungsdatenbank verwenden

2. Einführung in verwandte Funktionen

2.1, fopen

2.2, array_keys

2.3, array_values

2.4, implodieren

2.5, substr

2.6, fwrite

3. Umsetzungsideen

4. Code-Zusammensetzung

/**
 * [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. Der Hauptprozess der Sicherung der Datenbank:

1: Wechseln Sie zur entsprechenden Datenbank;

2: Verwenden Sie show create table tableName, um die Tabellenstruktur abzurufen und in die Datei zu schreiben

3: Fragen Sie dann alle Tabellendaten ab , Schleife, um die entsprechende SQL-Anweisung zu generieren, und schreibe sie in die Datei

4: Durch Testlauf generierte SQL-Datei;

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine automatische Datenbanksicherung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn