当前位置:首页 > 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.      * return $str 循环生成数据库建表和插入值的sql语句 
  63.      */ 
  64.     function gettables(){ 
  65.         $mysqli = new mysqli("localhost","root","","bbs"); 
  66.         $str = ''
  67.         if ($result = $mysqli->query("SHOW TABLES")) { 
  68.             while($row = $result->fetch_row()){ 
  69.                 $str.= data2sql($row[0])."<br/>"
  70.             } 
  71.             $mysqli->close(); 
  72.             return $str
  73.         }    
  74.      
  75.     }  
  76.     
  77.  
  78.     /** 
  79.      * 获得数据库中的表结构和值 
  80.      * return $tabledump 返回一个表中的结构和值的sql语句 
  81.      */ 
  82.     function data2sql($table){   
  83.      $mysqli = new mysqli("localhost","root","","bbs"); 
  84.         /* check connection */ 
  85.         if (mysqli_connect_errno()) { 
  86.             printf("Connect failed: %sn", mysqli_connect_error()); 
  87.         exit(); 
  88.     } 
  89.          $tabledump = "DROP TABLE IF EXISTS $table;n"
  90.          $result = $mysqli->query("SHOW CREATE TABLE $table"); 
  91.          $create = $result->fetch_row();  
  92.          $tabledump .= $create[1].";nn"
  93.    
  94.          $rows = $mysqli->query("SELECT * FROM $table"); 
  95.          $numfields = $rows->num_rows; 
  96.  
  97.             while ($row = $rows->fetch_row()){ 
  98.              $comma = ""
  99.              $tabledump .= "INSERT INTO $table VALUES("
  100.               for($i = 0; $i < $numfields$i++) 
  101.               { 
  102.                  $tabledump .= $comma."'".mysql_escape_strin 
  103. g($row[$i])."'"
  104.                  $comma = ","
  105.               } 
  106.              $tabledump .= ");n"
  107.           } 
  108.          $tabledump .= "n"
  109.    
  110.           return $tabledump
  111.       } 
  112. ?>

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

分享到: