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

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备份脚本

分享到: