时间:2021-07-21人气:-
手把手教你实现MYSQL的备份还原示例代码用我比较熟悉的PHP,当然你看完并理解了其中的思路,相信你也可以快速地用你熟悉的语言自己写出来。一、新建dbBackup类,设置默认参数。, 0, -1)、mb_substr($sql, 0, -3),必须去除最后一个逗号(,) 否则SQL语句出错5.$sql.=";-- <xjx> --rnrn",详见第四步注六、备份操作复制代码 代码如下:/*** 备份 ...* @param $filename 文件路径*/function beifen($filename) {$this->db(); //连接数据库$sql=$this->sqlcreate();$sql2=$this->sqlinsert();$data=$sql.$sql2;return file_put_contents($filename, $data);}七、还原操作复制代码 代码如下:/*** 还原 ...* @param $filename 文件路径*/function huanyuan($filename) {$this->db(); //连接数据库//删除数据表$list=$this->tblist();$tb='';foreach ($list as $v) {$tb.="`$v`,";}$tb=mb_substr($tb, 0, -1);if ($tb) {$rs=mysql_query("DROP TABLE $tb");if ($rs===false) {return false;}}//执行SQL$str=file_get_contents($filename);$arr=explode('-- <xjx> --', $str);array_pop($arr);foreach ($arr as $v) {$rs=mysql_query($v);if ($rs===false) {return false;}}return true;}备份示例:复制代码 代码如下:$x=new dbBackup();$x->database='test';$rs=$x->beifen('db.sql');var_dump($rs);还原示例:复制代码 代码如下:$x=new dbBackup();$x->database='test';$rs=$x->huanyuan('db.sql');var_dump($rs);完整代码:复制代码 代码如下:class dbBackup {public $host='localhost'; //数据库地址public $user='root'; //登录名public $pwd=''; //密码public $database; //数据库名public $charset='utf8'; //数据库连接编码:mysql_set_charset/*** 备份 ...* @param $filename 文件路径*/function beifen($filename) {$this->db(); //连接数据库$sql=$this->sqlcreate();$sql2=$this->sqlinsert();$data=$sql.$sql2;return file_put_contents($filename, $data);}/*** 还原 ...* @param $filename 文件路径*/function huanyuan($filename) {$this->db(); //连接数据库//删除数据表$list=$this->tblist();$tb='';foreach ($list as $v) {$tb.="`$v`,";}$tb=mb_substr($tb, 0, -1);if ($tb) {$rs=mysql_query("DROP TABLE $tb");if ($rs===false) {return false;}}//执行SQL$str=file_get_contents($filename);$arr=explode('-- <xjx> --', $str);array_pop($arr);foreach ($arr as $v) {$rs=mysql_query($v);if ($rs===false) {return false;}}return true;}/*** 连接数据库 ...*/function db() {$con = mysql_connect($this->host,$this->user,$this->pwd);if (!$con){die('Could not connect');}$db_selected = mysql_select_db($this->database, $con);if (!$db_selected) {die('Can't use select db');}mysql_set_charset($this->charset); //设置编码return $con;}/*** 表集合 ...*/function tblist() {$list=array();$rs=mysql_query("SHOW TABLES FROM $this->database");while ($temp=mysql_fetch_row($rs)) {$list[]=$temp[0];}return $list;}/*** 表结构SQL ...*/function sqlcreate() {$sql='';$tb=$this->tblist();foreach ($tb as $v) {$rs=mysql_query("SHOW CREATE TABLE $v");$temp=mysql_fetch_row($rs);$sql.="-- 表的结构:{$temp[0]} --rn";$sql.="{$temp[1]}";$sql.=";-- <xjx> --rnrn";}return $sql;}/*** 数据插入SQL ...*/function sqlinsert() {$sql='';$tb=$this->tblist();foreach ($tb as $v) {$rs=mysql_query("SELECT * FROM $v");if (!mysql_num_rows($rs)) {//无数据返回continue;}$sql.="-- 表的数据:$v --rn";$sql.="INSERT INTO `$v` VALUESrn";while ($temp=mysql_fetch_row($rs)) {$sql.='(';foreach ($temp as $v2) {if ($v2===null) {$sql.="NULL,";}else {$v2=mysql_real_escape_string($v2);$sql.="'$v2',";}}$sql=mb_substr($sql, 0, -1);$sql.="),rn";}$sql=mb_substr($sql, 0, -3);$sql.=";-- <xjx> --rnrn";}return $sql;}}//备份//$x=new dbBackup();//$x->database='test';//$rs=$x->beifen('db.sql');//var_dump($rs);//还原//$x=new dbBackup();//$x->database='test';//$rs=$x->huanyuan('db.sql');//var_dump($rs);
上篇:windows环境中mysql忘记root密码的解决方法详解
下篇:深入sql多表差异化联合查询的问题详解