• 技术文章 >后端开发 >php教程

    备份mysql数据库的php代码(一个表一个文件)_php技巧

    2016-05-17 09:25:05原创510
    复制代码 代码如下:

    $cfg_dbhost ='localhost';//mysql主机
    $cfg_dbname ='sq_test';//数据库名
    $cfg_dbuser ='root';//数据库用户名
    $cfg_dbpwd ='jb51.net';//数据库用户密码
    $cfg_db_language ='utf8';//数据库编码

    class dbmysql{
    public static $dbhost = 'localhost';
    public static $dbname;
    public static $dbuser = 'root';
    public static $dbpass;
    public static $charset = 'utf8';
    public static $DB = null;
    public $querycount = 0;

    public function __construct()
    {
    self::$dbhost = $GLOBALS['cfg_dbhost'];
    self::$dbname = $GLOBALS['cfg_dbname'];
    self::$dbuser = $GLOBALS['cfg_dbuser'];
    self::$dbpass = $GLOBALS['cfg_dbpwd'];
    self::$charset= $GLOBALS['cfg_db_language'];
    self::connect();
    }
    public function connect(){
    self::$DB=mysql_connect(self::$dbhost,self::$dbuser,self::$dbpass);
    if(!self::$DB){
    self::sqlError('无法连接服务器!'.self::mysqlerror);exit("无法连接服务器!");;
    }
    if(!mysql_select_db(self::$dbname)){
    self::sqlError('无法连接数据库('.self::$dbname.')!'.self::mysqlerror);exit("无法连接数据库!");
    }
    mysql_query("SET NAMES '".self::$charset."', character_set_client=binary, sql_mode='';",self::$DB);
    }

    private function mysqlerror(){
    return mysql_error();
    }

    public function getTablesName(){
    $res = mysql_query('SHOW TABLES FROM '.self::$dbname,self::$DB);
    $tables=array();
    while ($row=mysql_fetch_row($res))$tables[]=$row[0];
    mysql_free_result($res);
    return $tables;
    }
    public function getFields($table){
    $res=mysql_query('DESCRIBE '.$table,self::$DB);
    $tables=array();
    while($row=mysql_fetch_row($res))$tables[]=$row[0];
    mysql_free_result($res);
    return $tables;
    }

    public function fetch_array($sql){
    $res=mysql_query($sql,self::$DB);
    $r=mysql_fetch_array($res);
    mysql_free_result($res);
    return $r;
    }

    public function fetch_assoc($sql){
    $q3=mysql_query($sql,self::$DB); $ra=array();
    while($data=mysql_fetch_assoc($q3)){
    $ra[]=$data;
    }
    mysql_free_result($q3);
    return $ra;
    }
    private function sqlError($message='',$info ='',$sql=''){//保存错误信息到文件
    echo "{".$message."
    DATE: ".date('Y-n-j H:i:s')."
    ERROR: ".$info."
    SQL: ".$sql."
    }
    ";
    }
    public function close(){
    self::$DB =null;
    }
    public function __destruct()
    {
    self::close();
    }
    }

    /*---class end*/

    function makedir($dirpath){
    if(!$dirpath) return 0;
    $dirpath=str_replace("\\","//m.sbmmt.com/m/",$dirpath); $mdir="";
    foreach(explode("//m.sbmmt.com/m/",$dirpath) as $val){
    $mdir.=$val."//m.sbmmt.com/m/";
    if($val==".."||$val==".")continue;
    if(!is_dir($mdir)&&!file_exists($mdir)){
    if(!@mkdir($mdir,0755)){
    exit("创建目录 [".$mdir."]失败.");
    }
    }
    }
    return true;
    }

    function delDirAndFile($dirName){
    if($handle=opendir($dirName)){
    while(false!==($item = readdir($handle))){
    if($item !="."&&$item!=".."){
    if(is_dir( "$dirName/$item")){
    delDirAndFile( "$dirName/$item");
    }else{ unlink("$dirName/$item"); }
    }
    }
    closedir( $handle );
    if( rmdir( $dirName ) )echo "成功删除目录: $dirName
    \n";
    }
    }

    function filein($filename="databak/",$table='',$mysql=''){
    $fp = fopen($filename.'//m.sbmmt.com/m/'.$table.'.sql','w');
    fputs($fp,$mysql);
    fclose($fp);
    }

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

    $db=new dbmysql();

    $table=$db->getTablesName();

    $filename="databak/".date("Ymd");
    $url=getcwd()."/databak/";
    $handle = opendir($url);
    while(false!==($file = readdir($handle))){
    if ($file!="."&&$file!=".."&&is_dir($url."//m.sbmmt.com/m/".$file)) {
    if(date("Ymd")-$file>5){delDirAndFile($url."//m.sbmmt.com/m/".$file);};
    }
    }

    makedir($filename);
    foreach($table as $t){
    $s1=$db->fetch_array("show create table `$t`");
    $mysql="/*Time:".date("Y-m-d H:i:s")." */\r\nDROP TABLE IF EXISTS `$t`;\r\n".$s1['Create Table'].";\r\n\r\n";
    $a1=$db->fetch_assoc("select * from `$t`");
    foreach ($a1 as $data){
    $vals=array_values($data);
    $vals=array_map('addslashes',$vals);
    $vals=join("','",$vals);
    $vals="'".$vals."'";
    $mysql.="INSERT INTO `$t` VALUES ($vals);\r\n";
    }
    $mysql.="\r\n";
    filein($filename,$t,$mysql);
    }

    echo "数据备份成功,生成备份文件   ".getcwd()."//m.sbmmt.com/m/".$filename."/
    程序自动清理5天以前的备份";
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 备份mysql
    上一篇:php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)_php技巧 下一篇:php下将图片以二进制存入mysql数据库中并显示的实现代码_php技巧
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• qeephp模糊查询,该怎么解决• php如果对xml操作?解决方案• 求正责匹配字符串,该怎么解决• 提示框有关问题• 关于整合echop和discuz x的有关问题
    1/1

    PHP中文网