bitsCN.com
手把手教你实现MYSQL的备份还原
示例代码用我比较熟悉的PHP,当然你看完并理解了其中的思路,相信你也可以快速地用你熟悉的语言自己写出来。
一、新建dbBackup类,设置默认参数。
class dbBackup {
public $host='localhost'; //数据库地址
public $user='root'; //登录名
public $pwd=''; //密码
public $database; //数据库名
public $charset='utf8'; //数据库连接编码:mysql_set_charset
}
二、添加数据库连接function。
/**
* 连接数据库 ...
*/
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]} --/r/n";
$sql.="{$temp[1]}";
$sql.=";--
}
return $sql;
}
注:$sql.=";--
五、INSERT INTO语句
/**
* 数据插入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 --/r/n";
$sql.="INSERT INTO `$v` VALUES/r/n";
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.="),/r/n";
}
$sql=mb_substr($sql, 0, -3);
$sql.=";--
}
return $sql;
}
注:
1.无数据返回时必须跳出本次循环,避免生成多余代码
2.当字段值为(NULL)时,插入字符为(NULL)而不是('NULL'),没有单引号。3.$v2=mysql_real_escape_string($v2),这是必要的转义
4.mb_substr($sql, 0, -1)、mb_substr($sql, 0, -3),必须去除最后一个逗号(,) 否则SQL语句出错5.$sql.=";--
六、备份操作
/**
* 备份 ...
* @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('--
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('--
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]} --/r/n";
$sql.="{$temp[1]}";
$sql.=";--
}
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 --/r/n";
$sql.="INSERT INTO `$v` VALUES/r/n";
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.="),/r/n";
}
$sql=mb_substr($sql, 0, -3);
$sql.=";--
}
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);
bitsCN.com

最近一些刚刚下载接触雷电模拟器软件的用户,询问小编雷电模拟器如何新建一个模拟器?以下内容就带来了雷电模拟器新建一个模拟器的方法,让我们一起来下文看看吧。找到雷电模拟器器软件。双击打开雷电多开器。点击新建/复制模拟器。点击新建模拟器。就可以得到一个新建的模拟器了。找到雷电模拟器器软件,双击打开雷电多开器,点击新建/复制模拟器,点击新建模拟器,就可以得到一个新建的模拟器了。

每年Apple发布新的iOS和macOS大版本之前,用户都可以提前几个月下载测试版抢先体验一番。由于公众和开发人员都使用该软件,所以苹果公司为两者推出了developer和public版即开发者测试版的公共测试版。iOS的developer版和public版有什么区别呢?从字面上的意思来说,developer版是开发者测试版,public版是公共测试版。developer版和public版面向的对象不同。developer版是苹果公司给开发者测试使用的,需要苹果开发者帐号才可以收到下载并升级,是

新建word文档的方法也是有很多种的,我们可以通过右键桌面,然后点击新建doc文档还是docx文档,具体的方法都是差不多的,下面我们一起来看一下吧。使用电脑新建word文档方法:win11:1、首先我们右键点击“新建”。2、然后选择“docx或者是doc”文件。3、最后就可以完成创建了。win10:1、我们右键选择“新建”。2、随后还是选择两个文档中的一个。3、最后就完成创建了。win7:1、首先右键选择“新建”。2、然后选择word文档。3、最后就可以完成新建了。

Win10磁盘新建跨区卷灰色怎么办?有时候我们硬盘中有多个未使用的空间,我们可以将他们合并起来放在一个逻辑卷中,这样可以更有效地使用多个硬盘上的空间,这个就是跨区卷了。但是有网友说自己的win10系统在新建跨区卷的时候出现问题,发现磁盘新建跨区卷灰色点不了怎么回事?如何新建跨区卷?下面小编教下大家正确的新建跨区卷方法。 Win10磁盘新建跨区卷灰色解决步骤 首先,如下图所示两个硬盘上的空间可以使用同一个卷,建立跨区卷即可。 那么跨区卷灰色点不了的原因可能有下面的因素: 1、如果包含一个跨

1、打开企业微信。2、点击下左侧的【应用】图标按钮。3、点击下【汇报】,【新建】,【月报】选项。4、然后可以看到,需要输入本月工作等。5、输入本月工作的内容,其他的可填可不填,点击【提交】按钮。6、最后就可以看到自己的月报详情了。

在使用win10系统的时候,有些小伙伴们在桌面使用鼠标右键的时候,发现右键菜单中没有新建的选项,其实只需要通过注册表往里面添加一个选项就能够右键新建了。win10右键没有新建选项怎么办:1、按下组合键+打开运行,输入点击确定,打开注册表编辑器。2、然后依次展开文件夹:。3、然后找到文件夹,如果没有该文件夹,就右键文件夹--,命名为。4、打开new文件夹中的文件后,我们将这个数值数据更改为。5、然后重启电脑,就能够解决这个问题了。

真我手机文件夹建立步骤指南在日常生活中,我们使用手机来存储各种各样的文件,包括照片、视频、文档等等。然而,随着时间的推移,手机上的文件可能会越来越多,导致手机内存不足或文件难以管理。为了更好地整理文件并提高手机使用效率,手机文件夹的建立变得尤为重要。真我手机是一款受欢迎的智能手机品牌,拥有强大的系统和多样的功能。在真我手机上建立文件夹可以帮助用户更好地整理文

Javapublic访问权限修饰符允许函数从任何位置访问,用于声明公共API、定义跨包或类共享的工具和实用程序。具体用法如下:语法:public返回值类型函数名称(参数列表){...}场景:需要从任何地方访问的函数、公共API中的方法、共享的工具或实用程序


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器