PHPDatabase Backup還原

來源:互聯網
上載者:User

標籤:sel   cal   file   date   tor   insert   com   closed   php資料庫   

 //Database Backup
    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 "<hr><br><br>失敗命令如下:<br>";
                for ($ii=1;$ii<=$sb;$ii++)
                {
                    echo "<p><b>第 ".$ii." 條命令(內容如下):</b><br>".$sb_command[$ii]."</p><br>";
                }
            }  //-----------------------------------------------------------
        }else{
            echo "MySQL備份檔案不存在,請檢查檔案路徑是否正確!";
        }
    }

PHPDatabase Backup還原

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.