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

一个简单php数据库备份程序

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

php备份mysql数据库是很多个人站长网站所具备的功能,当然如果你要备份几个GB或更大的数据库时php备份方法感觉有点吃力了.

PHP 备份 mysql 数据库的源代码,在完善的 PHP+Mysql 项目中,在后台都会有备份 Mysql 数据库的功能,有了这个功能,我们就不用再使用 FTP 或者使用 mysql 的管理工具进行 mysql 数据库下载了,非常方便,对于想做这样功能的 phper 来说,其实原理并不是很麻烦,主要有以下三点.

一,一定要连接数据库,这样才能通过 SQL 语句打印出 mysql 数据表.

二,通过 PHP 的文件操作函数进行数据库的操作,包括创建保存 mysql 数据库的文件夹,这一步主要就是新建文件的步骤.

三,将 mysql 数据库进行保存下来.

通过这样的原理,我们就可以制作出一个属于自己的备份数据库的功能了,下面是一个php数据库备份的源代码,主要结构是依据上面的三点进行的,源码是由几个方法组成的,我们也可以将其封装成为自己的 php 类,举一反三,希望 phper 能在此基础上设计出适合自己的 mysql 数据库备份功能源码,代码如下:

  1. <?php 
  2. /** 备份数据库 生成.sql文件 
  3.      * @param $browseinfo  String  浏览器版本 
  4.      * return $browseinfo 
  5.      */ 
  6.     function createsql(){ 
  7.         //创建个日期 
  8.         $timer1 = time(); 
  9.         $path = "my_sql/"; 
  10.         $content =gettables(); 
  11.         $filename = $path.$timer1.".sql"; 
  12.     
  13.         //先判断文件夹在不在 
  14.          if(!file_exists($path)){ 
  15.         //如果不存在生成这个目录,0777表示最大的读写权限 
  16.             if(mkdir($path,0777)){ 
  17.             //echo"新建立目录";   
  18.             }//开源代码phpfensi.com 
  19.         } 
  20.  
  21.         //判断文件是否存在 
  22.         if(!file_exists($filename)){ 
  23.             //如果文件不存在,则创建文件 
  24.             @fopen($filename,"w"); 
  25.  
  26.             //判断文件是否可写 
  27.             if(is_writable($filename)){ 
  28.             //打开文件以添加方式即"a"方式打开文件流 
  29.                 if(!$handle =  fopen($filename,"a")){ 
  30.                     echo"文件不可打开"; 
  31.                     exit(); 
  32.                 } 
  33.  
  34.             if(!fwrite($handle,$content)){ 
  35.                 echo"文件不可写"; 
  36.                 exit(); 
  37.             } 
  38.  
  39.         //关闭文件流 
  40.         fclose($handle); 
  41.         echo "生成文件并保存首次内容"; 
  42.          
  43.     }else { 
  44.         echo"文件$filename不可写"; 
  45.     } 
  46.         }else{ 
  47.             if(is_writable($filename)){ 
  48.             //以添加方式打开文件流 
  49.             if(!$handle = fopen($filename,"a")){ 
  50.                 echo"文件不可打开"; 
  51.                 exit(); 
  52.             } 
  53.             fclose($handle); 
  54.             }else{ 
  55.                 echo "文件$filename不可写"; 
  56.             } 
  57.     } 
  58. } 
  59.  
  60.  
  61.     /** 
  62.      * 获得数据库中的表名 
  63.      * return $str 循环生成数据库建表和插入值的sql语句 
  64.      */ 
  65.     function gettables(){ 
  66.         $mysqli = new mysqli("localhost","root","","bbs"); 
  67.         $str = ''; 
  68.         if ($result = $mysqli->query("SHOW TABLES")) { 
  69.             while($row = $result->fetch_row()){ 
  70.                 $str.= data2sql($row[0])."<br/>"; 
  71.             } 
  72.             $mysqli->close(); 
  73.             return $str; 
  74.         }    
  75.      
  76.     }  
  77.     
  78.  
  79.     /** 
  80.      * 获得数据库中的表结构和值 
  81.      * return $tabledump 返回一个表中的结构和值的sql语句 
  82.      */ 
  83.     function data2sql($table){   
  84.      $mysqli = new mysqli("localhost","root","","bbs"); 
  85.         /* check connection */ 
  86.         if (mysqli_connect_errno()) { 
  87.             printf("Connect failed: %sn", mysqli_connect_error()); 
  88.         exit(); 
  89.     } 
  90.          $tabledump = "DROP TABLE IF EXISTS $table;n"; 
  91.          $result = $mysqli->query("SHOW CREATE TABLE $table"); 
  92.          $create = $result->fetch_row();  
  93.          $tabledump .= $create[1].";nn"; 
  94.    
  95.          $rows = $mysqli->query("SELECT * FROM $table"); 
  96.          $numfields = $rows->num_rows; 
  97.  
  98.             while ($row = $rows->fetch_row()){ 
  99.              $comma = ""; 
  100.              $tabledump .= "INSERT INTO $table VALUES("; 
  101.               for($i = 0; $i < $numfields; $i++) 
  102.               { 
  103.                  $tabledump .= $comma."'".mysql_escape_strin 
  104. g($row[$i])."'"; 
  105.                  $comma = ","; 
  106.               } 
  107.              $tabledump .= ");n"; 
  108.           } 
  109.          $tabledump .= "n"; 
  110.    
  111.           return $tabledump; 
  112.       } 
  113. ?>

Tags: php数据库备份 mysql数据备份

分享到: