Maison  >  Article  >  développement back-end  >  Comment implémenter la sauvegarde automatique de la base de données en PHP

Comment implémenter la sauvegarde automatique de la base de données en PHP

炎欲天舞
炎欲天舞original
2017-08-03 16:54:372822parcourir

Comment utiliser PHP pour sauvegarder automatiquement la base de données


1 Préface

Il existe de nombreuses façons de sauvegarder la base de données MySQL ;

Par exemple :

1. Utilisez la fonction mysqldump

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


  1. Le paramètre dbname représente la base de données. Les paramètres name

  2. table1 et table2 représentent les noms des tables qui doivent être sauvegardées. S'ils sont vides, toute la base de données le sera. sauvegardé ;

  3. Table des paramètres BackupName.sql Concevoir le nom du fichier de sauvegarde Vous pouvez ajouter un chemin absolu devant le nom du fichier. La base de données est généralement divisée en un fichier avec le suffixe sql

Utilisation de base :

2. Outils de gestion

Il existe de nombreuses façons de sauvegarder la base de données, les deux ci-dessus sont plus courantes

Cette fois, j'utilise principalement expliquer comment utiliser les fonctions php À partir de la base de données de sauvegarde automatique

2 Introduction aux fonctions associées

2.1, fopen

2.2, array_keys<.>

2.3, array_values

2.4, imploser

2.5, substr

2.6, fwrite

3. Idées de mise en œuvre

4. Composition du code

5. Conclusion
/**
 * [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(&#39;show tables&#39;);//获取当期数据库所有表名称
	while($re = $tables->fetch(PDO::FETCH_ASSOC)){
		//var_dump($re);//查看数组构成
		$tableName = $re[&#39;Tables_in_&#39;.$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);}

Le processus principal de sauvegarde de la base de données :

1 : Basculez vers la base de données correspondante ;

2 : Utilisez show create table tableName pour obtenir la structure de la table et écrivez-la dans le fichier

3 : Ensuite, interrogez toutes les données de la table ; , bouclez pour générer l'instruction SQL correspondante et écrivez-la dans le fichier Medium

4 : fichier SQL généré par essai

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!

Déclaration:
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