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

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

一,一定要连接数据库,这样才能通过 SQL 语句打印出 mysql 数据表,二,通过 PHP 的文件操作函数进行数据库的操作,包括创建保存 mysql 数据库的文件夹,这一步主要就是新建文件的步骤,三,将 mysql 数据库进行保存下来。

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

 代码如下 复制代码

<?php
/** 备份数据库 生成.sql文件
     * @param $browseinfo  String  浏览器版本
     * return $browseinfo
     */
    function createsql(){
        //创建个日期
        $timer1 = time();
        $path = "my_sql/";
        $content =gettables();
        $filename = $path.$timer1.".sql";
  
        //先判断文件夹在不在
         if(!file_exists($path)){
        //如果不存在生成这个目录,0777表示最大的读写权限
            if(mkdir($path,0777)){
            //echo"新建立目录"; 
            }
        }

        //判断文件是否存在
        if(!file_exists($filename)){
            //如果文件不存在,则创建文件
            @fopen($filename,"w");

            //判断文件是否可写
            if(is_writable($filename)){
            //打开文件以添加方式即"a"方式打开文件流
                if(!$handle =  fopen($filename,"a")){
                    echo"文件不可打开";
                    exit();
                }

            if(!fwrite($handle,$content)){
                echo"文件不可写";
                exit();
            }

        //关闭文件流
        fclose($handle);
        echo "生成文件并保存首次内容";
       
    }else {
        echo"文件$filename不可写";
    }
        }else{
            if(is_writable($filename)){
            //以添加方式打开文件流
            if(!$handle = fopen($filename,"a")){
                echo"文件不可打开";
                exit();
            }
            fclose($handle);
            }else{
                echo "文件$filename不可写";
            }
    }
}

    /**
     * 获得数据库中的表名
     * return $str 循环生成数据库建表和插入值的sql语句
     */
    function gettables(){
        $mysqli = new mysqli("localhost","root","","bbs");
        $str = '';
        if ($result = $mysqli->query("SHOW TABLES")) {
            while($row = $result->fetch_row()){
                $str.= data2sql($row[0])."<br/>";
            }
            $mysqli->close();
            return $str;
        }  
   
    }
   

    /**
     * 获得数据库中的表结构和值
     * return $tabledump 返回一个表中的结构和值的sql语句
     */
    function data2sql($table){ 
     $mysqli = new mysqli("localhost","root","","bbs");
        /* check connection */
        if (mysqli_connect_errno()) {
            printf("Connect failed: %sn", mysqli_connect_error());
        exit();
    }
         $tabledump = "DROP TABLE IF EXISTS $table;n";
         $result = $mysqli->query("SHOW CREATE TABLE $table");
         $create = $result->fetch_row();
         $tabledump .= $create[1].";nn";
 
         $rows = $mysqli->query("SELECT * FROM $table");
         $numfields = $rows->num_rows;

            while ($row = $rows->fetch_row()){
             $comma = "";
             $tabledump .= "INSERT INTO $table VALUES(";
              for($i = 0; $i < $numfields; $i++)
              {
                 $tabledump .= $comma."'".mysql_escape_strin
g($row[$i])."'";
                 $comma = ",";
              }
             $tabledump .= ");n";
          }
         $tabledump .= "n";
 
          return $tabledump;
      }
?>

时间: 2024-07-31 00:41:57

一个简单php数据库备份程序的相关文章

asp数据库备份程序

  asp数据库备份程序,这程序是我初学asp时用fso写的一个在线文件备份代码,简单也比较实用了,只是只对access数据库,备份原理就是把文件复制到我们指点的地方了,好了下面看源码. <%   dim action,start,index1   start=request.Form("start")   index1=request.Form("index")   action=request.QueryString("action")

使用NetBeans IDE创建并运行一个简单的web应用程序

在本教程中,您将使用 NetBeans IDE 创建并运行一个简单的 web 应用程序,Hello Web.本示例应用程序要求您输入一个名字,之后使用那个名字显示一条信息.首先,您需要使用一个输入框来实现这个页面.之后您使用一个用户可以选择名字的下拉列表来替换那个输入框.下拉列表中输入的名字来自数据库表. 本教程需要以下技术以及资源的支持 JavaServer Faces 组件/Java EE 平台 1.2 with Java EE 5*1.1 with J2EE 1.4 Travel 数据库

通过构建一个简单的SMS应用程序来理解Worklight的适配器框架

一些http://www.aliyun.com/zixun/aggregation/14219.html">移动应用程序不需要后端连接,比如游戏或计算器,但大多数企业移动应用程序都会通过移动化可通过网络获得的数据和功能而获益.这些数据和功能可能来自企业的系统,或者通过公开为 API 的第三方服务获得.Worklight 在 Worklight 服务器中提供了一个适配器框架来调用这些服务. Worklight 支持 3 种核心适配器类型: HTTP 用于一般 HTTP 连接,包括 RESTf

如何使用SQLyogEnt来建立一个简单的数据库

如果你选择PHP进行网站建设,那你必须懂得php建立数据库,那用mysql数据就是必须的了.刚接触php的朋友也许对这个mysql数据库很陌生,但如果有一款非常好用的数据库管理工具,那是用起来就方便多了,笔者几天就向大家介绍一款mysql的管理工具SQLyogEnt,笔者是用的 SQLyogEnt是英文版,目前好像没有中文版,由于功能强大,所以SQLyogEnt很受PHP用户的喜爱,接下就用实例来讲解下如何使用 SQLyogEnt来建立一个简单的数据库. 今天我建立的数据库名叫"mydb&quo

一个简单的数据库查询问题

问题描述 一个简单的数据库查询问题 一个文章表,一个评论表,通过文章的ID关联,现在要查出文章表中的一条数据和评论表中关于这篇文章的评论的个数,求帮忙 谢谢了. 解决方案 select w.*(select count(*) from 评论表 p where p.id=w.id ) as cnt from 文章表 w where w.id="" ""看明白不? 解决方案二: select w.neirong as 内容count(*) as 评论个数 from we

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

如何使用C#创建一个三层的数据库应用程序

程序|创建|数据|数据库 如何使用C#创建一个三层的数据库应用程序1.分析在我们这个程序中采用如下的层次:Web层,业务实体层,数据层.其中:业务实体层负责Web层与数据层之间的数据交换.数据层仅仅代表数据库.Web层通过业务实体层来访问数据库.我们的中间的业务实体层采用WebService.2.实例我们通过一个实例来学习三层架构.(1) 以sql2000为例建立TestUser数据库.表的sql脚本(在查询分析器中执行即可):/****** Object: Table [dbo].[Custo

Java核心技术卷I基础知识3.1 一个简单的Java应用程序

第3章 Java的基本程序设计结构 ▲  一个简单的Java应用程序     ▲  字符串 ▲  注释                      ▲  输入输出 ▲  数据类型               ▲  控制流 ▲  变量                      ▲  大数值 ▲  运算符                  ▲  数组   现在,假定已经成功地安装了JDK,并且能够运行第2章中给出的示例程序.我们从现在开始将介绍Java应用程序设计.本章主要介绍程序设计的基本概念(如数

Cocoa练习01:一个简单的Todo list程序

写一个简单的todo list程序,界面如下图: 在TextField区域输入文字,点击Add按钮会将文字显示在下面的TableView列表中.TableView列表有2列,第一列是文字的输入时间:第二列是文字内容本身.同时TableView的第二列是可以实时手动编辑修改的,修改后自动会修正对应第一列的时间: 1.在AppDelegate类的接口中首先绑定2个outlet和1个action: - (IBAction)add:(id)sender; @property (weak) IBOutle