热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库备份_PHP数据库备份还原

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP数据库备份还原相关的知识,希望对你有一定的参考价值。  //数据库备份    public functi

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP数据库备份还原相关的知识,希望对你有一定的参考价值。


 //数据库备份
    public function exportDatabase(){
        //备份数据库
        $host="localhost";
        $user="root";//数据库账号
        $password="root";//数据库密码
        $dbname="article";//数据库名称
//这里的账号、密码、名称都是从页面传过来的
        if(!mysql_connect($host,$user,$password)) //连接mysql数据库
        {
            echo ‘数据库连接失败,请核对后再试‘;
            exit;
        }
        if(!mysql_select_db($dbname)) //是否存在该数据库
        {
            echo ‘不存在数据库:‘.$dbname.‘,请核对后再试‘;
            exit;
        }
        mysql_query("set names ‘utf8‘");
        $mysql= "set charset utf8;\r\n";
        $q1=mysql_query("show tables");
        while($t=mysql_fetch_array($q1)){
            $table=$t[0];
//            DROP TABLE IF EXISTS `article`;
            $q2=mysql_query("show create table `$table`");
            $sql=mysql_fetch_array($q2);
            $mysql.="DROP TABLE IF EXISTS `".$sql[‘Table‘]."`;\r\n".$sql[‘Create Table‘].";\r\n";
            $q3=mysql_query("select * from `$table`");
            while($data=mysql_fetch_assoc($q3)){
                $keys=array_keys($data);
                $keys=array_map(‘addslashes‘,$keys);
                $keys=join(‘`,`‘,$keys);
                $keys="`".$keys."`";
                $vals=array_values($data);
                $vals=array_map(‘addslashes‘,$vals);
                $vals=join("‘,‘",$vals);
                $vals="‘".$vals."‘";
                $mysql.="insert into `$table`($keys) values($vals);\r\n";
            }
        }
        $filename="data/".$dbname.date(‘YmdHis‘).".sql"; //存放路径,默认存放到项目最外层
        $fp = fopen($filename,‘w‘);
        fputs($fp,$mysql);
        fclose($fp);
        echo "数据备份成功";
        }

//删除文件名
//    function delFile($dirName){
//        if(file_exists($dirName) && $handle=opendir($dirName)){
//            while(false!==($item = readdir($handle))){
//                if($item!= "." && $item != ".."){
//                    if(file_exists($dirName.‘/‘.$item) && is_dir($dirName.‘/‘.$item)){
//                        delFile($dirName.‘/‘.$item);
//                    }else{
//                        if(unlink($dirName.‘/‘.$item)){
//                            return true;
//                        }
//                    }
//                }
//            }
//            closedir( $handle);
//        }
//    }

//数据还原
    public function inputDatabase($name){
        $filename = $name;
        $host="localhost"; //主机名
        $user="root"; //MYSQL用户名
        $password="root"; //密码
        $dbname="article"; //在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名
        mysql_connect($host,$user,$password);
        mysql_select_db($dbname);
        $mysql_file="data/".$filename; //指定要恢复的MySQL备份文件路径,请自已修改此路径
        $this->restore($mysql_file); //执行MySQL恢复命令
    }
    function restore($fname)
    {
        if (file_exists($fname)) {
            $sql_value="";
            $cg=0;
            $sb=0;
            $sqls=file($fname);
            foreach($sqls as $sql)
            {
                $sql_value.=$sql;
            }
            $a=explode(";\r\n", $sql_value); //根据";\r\n"条件对数据库中分条执行
            $total=count($a)-1;
            mysql_query("set names ‘utf8‘");
            for ($i=0;$i<$total;$i++)
            {
                mysql_query("set names ‘utf8‘");
                //执行命令
                if(mysql_query($a[$i]))
                {
                    $cg+=1;
                }
                else
                {
                    $sb+=1;
                    $sb_command[$sb]=$a[$i];
                }
            }
            echo "操作完毕,共处理 $total 条命令,成功 $cg 条,失败 $sb 条";
            //显示错误信息
            if ($sb>0)
            {
                echo "




失败命令如下:
";
                for ($ii=1;$ii<=$sb;$ii++)
                {
                    echo "

第 ".$ii." 条命令(内容如下):
".$sb_command[$ii]."


";
                }
            }  //-----------------------------------------------------------
        }else{
            echo "MySQL备份文件不存在,请检查文件路径是否正确!";
        }
    }























































































































推荐阅读
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文主要介绍了MySQL中子查询的基本用法和三种用法,包括生成参考值、内层查询与外层查询的比较操作以及使用事件号在成绩表中找到学生的分数记录。通过详细解析子查询的实例,帮助读者更好地理解和应用子查询。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了通过mysql命令查看mysql的安装路径的方法,提供了相应的sql语句,并希望对读者有参考价值。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
author-avatar
X婷婷Z
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有