微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php备份数据库

<?PHP

    /**

    *    

    *    @name  PHP备份数据库 

    *    @param string   $DbHost       连接主机

    *    @param string   $DbUser       用户名

    *    @param string   $DbPwd        连接密码

    *    @param string   $dbname       要备份的数据库

    *    @param string   $saveFileName 要保存的文件名,文件保存在当前文件夹中,以日期作区分

    *    @return Null

    *    @example backupMysqLData('localhost','root','123456','Yourdbname');

    *

    */

    function backupMysqLData($DbHost,$DbUser,$DbPwd,$dbname,$saveFileName = '')

    {

        header("Content-type:text/html;charset=utf-8");

        error_reporting(0);

        set_time_limit(0);

        echo '数据备份中,请稍候......<br />';

        $link = MysqL_connect($DbHost,$DbPwd) or die('数据库连接失败: ' . MysqL_error());

        MysqL_select_db($dbname) or die('数据库连接失败: ' . MysqL_error());

        MysqL_query('set names utf8');

        

        // 声明变量

        $isDropInfo     = '';

        $insertsql      = '';

        $row            = array();

        $tables         = array();

        $tableStructure = array();

        $fileName       = ($saveFileName ? $saveFileName : 'MysqL_data_bakeup_') . date('YmdHis') . '.sql';

        // 枚举该数据库所有的表

        $res = MysqL_query("SHOW TABLES FROM $dbname");

        while ($row = MysqL_fetch_row($res)) {

            $tables[] = $row[0];

        }

        MysqL_free_result($res);

        // 枚举所有表的创建语句

        foreach ($tables as $val) {

            $res = MysqL_query("show create table $val",$link);

            $row = MysqL_fetch_row($res);

            $isDropInfo     = "DROP TABLE IF EXISTS `" . $val . "`;rn";

            $tableStructure = $isDropInfo . $row[1] . ";rn";

            file_put_contents($fileName,$tableStructure,FILE_APPEND);

            MysqL_free_result($res);

        }

        // 枚举所有表的INSERT语句

        foreach ($tables as $val) {

            $res = MysqL_query("select * from $val");

            // 没有数据的表不执行insert

            while ($row = MysqL_fetch_row($res)) {

                $sqlStr = "INSERT INTO `".$val."` VALUES (";

                foreach($row as $v){

                    $sqlStr .= "'$v',";

                }

                //去掉最后一个逗号

                $sqlStr  = substr($sqlStr,strlen($sqlStr) - 1);

                $sqlStr .= ");rn";

                file_put_contents($fileName,$sqlStr,FILE_APPEND);

            }

            MysqL_free_result($res);

        }

        echo '数据备份成功!';

    }

// 调用方法 

    backupMysqLData('localhost','Youdbname');    

?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐