当前位置:首页 > PHP教程 > php高级应用 > 列表

php备份数据库脚本的几个例子

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-10 10:30:57 浏览: 评论:0 

利用php备份mysql数据库就是把数据生成.sql文件,这样就算是数据备份成功了,恢复时也可以直接读取再一条条执行即可,下面整理了一些备份例子大家有兴趣的可进来参考.

例子,代码如下:

  1. <?php  
  2. // 备份数据库 
  3. $host = "localhost"; 
  4. $user = "root"; //数据库账号 
  5. $password = ""; //数据库密码 
  6. $dbname = "mysql"; //数据库名称 
  7. // 这里的账号、密码、名称都是从页面传过来的 
  8. if (!mysql_connect($host, $user, $password)) // 连接mysql数据库 
  9.     { 
  10.         echo '数据库连接失败,请核对后再试'; 
  11.     exit; 
  12. }  
  13. if (!mysql_select_db($dbname)) // 是否存在该数据库 
  14.     { 
  15.         echo '不存在数据库:' . $dbname . ',请核对后再试'; 
  16.     exit; 
  17. }  
  18. mysql_query("set names 'utf8'"); 
  19. $mysql = "set charset utf8;\r\n"; 
  20. $q1 = mysql_query("show tables"); 
  21. while ($t = mysql_fetch_array($q1)) 
  22. { 
  23.     $table = $t[0]; 
  24.     $q2 = mysql_query("show create table `$table`"); 
  25.     $sql = mysql_fetch_array($q2); 
  26.     $mysql .= $sql['Create Table'] . ";\r\n"; 
  27.     $q3 = mysql_query("select * from `$table`"); 
  28.     while ($data = mysql_fetch_assoc($q3)) 
  29.     { 
  30.         $keys = array_keys($data); 
  31.         $keys = array_map('addslashes', $keys); 
  32.         $keys = join('`,`', $keys); 
  33.         $keys = "`" . $keys . "`"; 
  34.         $vals = array_values($data); 
  35.         $vals = array_map('addslashes', $vals); 
  36.         $vals = join("','", $vals); 
  37.         $vals = "'" . $vals . "'"; 
  38.         $mysql .= "insert into `$table`($keys) values($vals);\r\n"; 
  39.     }  
  40. }  
  41.  
  42. $filename = $dbname . date('Ymjgi') . ".sql"; //存放路径,默认存放到项目最外层 
  43. $fp = fopen($filename, 'w'); 
  44. fputs($fp, $mysql); 
  45. fclose($fp); 
  46. echo "数据备份成功"; 
  47.  
  48. ?>  
  49. //例子,代码如下: 
  50. #!/usr/bin/php www.phpfensi.com 
  51. <?php 
  52. header('Content-Type:text/html;charset=utf-8'); 
  53.  
  54. define('BACK_PATH', dirname(__FILE__)); 
  55.  
  56. /** 
  57. 为空数组就备份所有数据库 
  58. */ 
  59. $back_databases = array('learning','wp'); 
  60.  
  61. $mysql_host = 'localhost'; 
  62.  
  63. $mysql_user = 'root'; 
  64.  
  65. $mysql_passwd = 'root'; 
  66.  
  67. if($conn = mysql_connect($mysql_host, $mysql_user, $mysql_passwd)){ 
  68.  
  69.  $databases = array(); 
  70.  
  71.  mysql_select_db('mysql', $conn); 
  72.  
  73.  $query  =mysql_query('show databases',$conn); 
  74.  
  75.  while($row = mysql_fetch_array($query)) 
  76.  { 
  77.   if(emptyempty($row)) continue; 
  78.    
  79.   $database = $row[0]; 
  80.    
  81.   if(!emptyempty($back_databases) && !in_array($database, $back_databases)) continue; 
  82.      
  83.   $sql_dir = BACK_PATH . "/{$database}.sql"; 
  84.     
  85.   $execs = "mysqldump --user={$mysql_user} --password={$mysql_passwd} {$database} > " . $sql_dir; 
  86.    
  87.   system($execs); 
  88.    
  89.   if(file_exists($sql_dir . '.gz')) { 
  90.      unlink($sql_dir . '.gz'); 
  91.   } 
  92.      
  93.   system('gzip ' . $sql_dir); 
  94.  } 
  95. } 
  96. //例子,代码如下: 
  97. <?php  
  98. $host="##mysql服务器地址##";  
  99. $user="##登录帐号##";  
  100. $password="##登录密码##";  
  101. $dbname="##数据库名##";  
  102. $filename="##备份文件路径##";  
  103. mysql_connect($host,$user,$password);  
  104. mysql_select_db($dbname);  
  105. $mysql.="CREATE DATABASE IF NOT EXISTS `".$dbname."`;\r\n";  
  106. $mysql.="USE `".$dbname."`;\r\n\r\n";  
  107. $q0=mysql_query("set names utf8");  
  108. $q1=mysql_query("show tables");  
  109. while($t=mysql_fetch_array($q1)){  
  110.   $table=$t[0];  
  111.   $mysql.="DROP TABLE IF EXISTS `".$table."`;\r\n";  
  112.   $q2=mysql_query("show create table `$table`");  
  113.   $sql=mysql_fetch_array($q2);  
  114.   $mysql.=$sql['Create Table'].";\r\n\r\n";  
  115.   $q3=mysql_query("select * from `$table`");  
  116.   while($data=mysql_fetch_assoc($q3)){  
  117.     $keys=array_keys($data);  
  118.     $keys=array_map('addslashes',$keys);  
  119.     $keys=join('`,`',$keys);  
  120.     $keys="`".$keys."`";  
  121.     $vals=array_values($data);  
  122.     $vals=array_map('addslashes',$vals);  
  123.     $vals=join("','",$vals);  
  124.     $vals="'".$vals."'";  
  125.     $mysql.="insert into `$table`($keys) values($vals);\r\n";  
  126.   }  
  127.   $mysql.="\r\n";  
  128. }  
  129. $fp = fopen($filename,'wb');  
  130. fputs($fp,$mysql);  
  131. fclose($fp);  
  132. include_once('lib/pclzip.lib.php');  
  133. $archive = new PclZip($filename.'.zip');  
  134. $v_list = $archive->create($filename);  
  135. if ($v_list == 0) {  
  136.    die("Error : ".$archive->errorInfo(true));  
  137. }  
  138. if(file_exists($filename)){  
  139.    unlink($filename);  
  140. }  
  141. echo "Mysql's backup successfully to ".$filename.".zip";  
  142. ?>  

Zip打包备份代码,几乎就是全抄demo,太方便了,代码如下:

  1. <?PHP  
  2. include_once('lib/pclzip.lib.php');  
  3. $src="##源路径##";  
  4. $dest="##目标zip路径##";  
  5. $archive = new PclZip($dest);  
  6. $v_list = $archive->create($src);  
  7. if ($v_list == 0) {  
  8.    die("Error : ".$archive->errorInfo(true));  
  9. }else{  
  10.      print("Success");  
  11. }  
  12. ?> 

pclzip.lib.php这个压缩包文件大家百度去下载这里未提供.

Tags: php备份数据库 php备份脚本

分享到: