Anonymous 发表于 2021-8-25 11:42:57

问点技术性的问题,PHP7下MYSQL备份

用着10年的老程序,最近升级了PHP7一下各种报错全来了。自己百度解决了大部份问题。

备份表的自己解决了,可是备份内容的实在找不到方法了,文件内容如下,各位大大帮看下

public function list_fields($dbname,$tbname){returnmysqli_list_fields($dbname,$tbname,$this->link_id);}


if(!IsNum($size))
        $size=1024;
        $bakStr='';
        $tabelresult=$db->list_tables(cd_sqldbname);
        if($tabelresult){
                while($tabelrow=mysql_fetch_row($tabelresult)){
                        $ycms_ID=explode("_",$tabelrow);
                        if($ycms_ID==ReplaceStr(cd_tablename, "_", "")){
                                $intable="INSERT INTO `$tabelrow` VALUES(";
                                $fieldresult = $db->list_fields(cd_sqldbname, $tabelrow);
                                $i=0;
                                if($fieldresult) {
                                        //分析表里的字段信息
                                        while($fieldrow=mysql_fetch_field($fieldresult)){
                                                $fs[$i]=trim($fieldrow->name);
                                                $i++;
                                        }
                                        $fsd=$i-1;
                                        ////读取表的内容
                                        $sql="select * from `$tabelrow`";
                                        $result=$db->getAll($sql);
                                        for($j=0;$j<count($result);$j++){
                                                $line=$intable;
                                                for($k=0; $k<=$fsd; $k++){
                                                        if($k<$fsd) {
                                                                $line.="'".mysql_escape_string($result[$j][$fs[$k]])."',";
                                                        }else{
                                                                $line.="'".mysql_escape_string($result[$j][$fs[$k]])."');\r\n";
                                                        }
                                                }
                                                $bakStr.=$line;
                                                if(strlen($bakStr)>$size*1024){
                                                        $a=$a+1;
                                                        $b=$b+1;
                                                        $bkfile="../backup/".date('Ymd-H')."/tables_datas_".substr(md5(time().mt_rand(1000,5000)),0,16).".txt";
                                                        $fp=fopen($bkfile, "w");
                                                        fwrite($fp, $bakStr);
                                                        fclose($fp);
                                                        echo "&nbsp;<font style=\"font-size:10pt;\">数据库:<font color=red>../backup/".date('Ymd-H')."/".rand(1000,5000)."".rand(1000,5000)."".rand(1000,5000).".txt</font> 文件备份成功...</font></font><br/>";
                                                        $bakStr='';
                                                }
                                        }
                                }
                        }
                }
                if(!empty($bakStr) && strlen($bakStr)<$size*1024){
                        $bkfile="../backup/".date('Ymd-H')."/tables_datas_".substr(md5(time().mt_rand(1000,5000)),0,16).".txt";
                        $fp=fopen($bkfile,"w");
                        fwrite($fp,$bakStr);
                        fwrite(fopen("../backup/".date('Ymd-H')."/Atime.txt", "wb"),"".date('Y-m-d H:i:s')." / ".$_COOKIE['CD_AdminUserName']."");
                        fwrite(fopen("../tools/bftime.txt", "wb"),"".date('Y-m-d H:i:s')."");
                        if($b){$backupsize=formatsize($b*1048576);}else{$backupsize='1MB';}
                        exit("<br/><br/>&nbsp;<font style=\"font-size:10pt;\"><b>恭喜您,数据库已全部备份完毕!</b></font>&nbsp;<font style=\"font-size:10pt;\"><b>备份".$a."个文件,占用空间:".$backupsize."</b></font><script language='javascript'>alert('恭喜您,数据库已全部备份完毕!共备份".$a."个文件,占用空间:".$backupsize."');top.frames['main'].location.reload();</script>");
                        fclose($fp);
                }
        }

Google_Adsense 发表于 2021-8-25 12:15:04

整这么麻烦干嘛,直接mysqldump不香吗

syxxz 发表于 2021-8-26 00:06:27

希望以后用得上

GoogleSpider 发表于 2021-8-26 09:27:42

crazy 发表于 2021-8-26 13:00:12

pdo封装到家,推荐使用

741111 发表于 2021-8-26 19:07:26

备份个啥?mysql停止,直接打包

lichail 发表于 2021-8-26 21:46:47

是虚拟机就用免费的帝国备份王,分卷备份,无论多大表都能备份,不要自己去写php程序

如果是vps或独立服务器,可以mysqldump

衣郎 发表于 2021-8-27 00:40:20

lichail 发表于 2021-8-26 21:46
是虚拟机就用免费的帝国备份王,分卷备份,无论多大表都能备份,不要自己去写php程序

如果是vps或独立服 ...

收藏一下

myes 发表于 2021-8-27 09:53:48

lichail 发表于 2021-8-26 21:46
是虚拟机就用免费的帝国备份王,分卷备份,无论多大表都能备份,不要自己去写php程序

如果是vps或独立服 ...

帝国备份王是不是不兼容php7?安装后一大堆报错

lichail 发表于 2021-8-29 19:47:54

我用的php7.1.4没问题,官方下载:
http://www.phome.net/product/Ebak.html
页: [1] 2
查看完整版本: 问点技术性的问题,PHP7下MYSQL备份