php备份还原mysql数据库数据表代码

代码语言:php

所属分类:其他

代码描述:php备份还原mysql数据库数据表代码

代码标签: mysql 数据库 数据表

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php

class MysqlBackStore
{

    var $db;
    // 数据库连接
    var $database;
    // 所用数据库
    var $sqldir;
    // 数据库备份文件夹
    // 换行符
    private $ds = "\n";
    // 存储SQL的变量
    public $sqlContent = "";
    // 每条sql语句的结尾符
    public $sqlEnd = ";";

    /**
     * 初始化
     *
     * @param string $host
     * @param string $username
     * @param string $password
     * @param string $database
     * @param string $charset
     */
    function __construct($host = 'localhost', $username = 'root', $password = 'root', $database = 'bfwtest', $charset = 'utf8')
    {
        $this->host = $host;
        $this->username = $username;
        $this->password = $password;
        $this->database = $database;
        $this->charset = $charset;

      //  @ob_end_flush();
        // 连接数据库
        $this->db = @mysql_connect($this->host, $this->username, $this->password) or die('<p class="dbDebug"><span class="err">Mysql Connect Error : </span>' . mysql_error() . '</p>');
        // 选择使用哪个数据库
        mysql_select_db($this->database, $this->db) or die('<p class="dbDebug"><span class="err">Mysql Connect Error:</span>' . mysql_error() . '</p>');
        // 数据库编码方式
        mysql_query('SET NAMES ' . $this->charset, $this->db);
    }

    /*
     * 新增查询数据库表
     */
    function getTables()
    {
        $res = mysql_query("SHOW TABLES");
        $tables = array();
        while ($row = mysql_fetch_array($res)) {
            $tables[] = $row[0];
        }
        return $tables;
    }

    /*
     *
     * ------------------------------------------数据库备份start----------------------------------------------------------
     */

    /**
     * 数据库备份
     * 参数:备份哪个表(可选),备份目录(可选,默认为backup),分卷大小(可选,默认2000,即2M)
     *
     * @param $string $dir
     * @param int $size
     * @param $string $tablename
     */
    function backup($tablename = '', $dir = './', $size = 20480)
    {
        $dir = $dir ? $dir : './';
        // 创建目录
        if (! is_dir($dir)) {
            @mkdir($dir, 0777, true) or die('创建文件夹失败');
        }
        $size = $size ? $size : 1024 * 20;
        $sql = '';
        // 只备份某个表
        if (! empty($tablename)) {
            if (@mysql_num_rows(mysql_query("SHOW TABLES LIKE '" . $tablename . "'")) == 1) {} else {
                $this->_showMsg('表-<b>' . $tablename . '</b>-不存在,请检查!', true);
                die();
            }
            $this->_showMsg('正在备份表 <span class="imp">' . $tablename . '</span>');
            // 插入dump信息
            $sql = $this->_retrieve();
            // 插入表结构信息
            $sql .= $this->_insert_table_structure($tablename);
            // 插入数据
            $data = mysql_query("select * from " . $tablename);
            // 文件名前面部分
            $filename = date('YmdHis') . "_" . $tablename;
            // 字段数量
            $num_fields = mysql_num_fields($data);
            // 第几分卷
            $p = 1;
            // 循环每条记录
            while ($record = mysql_fetch_array($data)) {
                // 单条记录
                $sql .= $this->_insert_record($tablename, $num_fields, $record);
                // 如果大于分卷大小,则写入文件
                if (strlen($sql) >= $size * 1024) {
                    $file = $filename . "_v" . $p . ".sql";
                    if ($this->_write_file($sql, $file, $dir)) {
                        $this->_showMsg("表-<b>" . $tablename . "</b>-卷-<b>" . $p . "</b>-数据备份完成,备份文件 [ <span class='imp'>" . $dir . $file . "</span> ]");
                    } else {
                     .........完整代码请登录后点击上方下载按钮下载查看

网友评论0