1.备份
query('SET NAMES UTF8');
echo '1.正在备份数据,切勿刷新浏览器。。。 ';
//0.声明变量
$isDropInfo = '';
$insertSQL = '';
$row = array();
$tables = array();
$tableStructure = array();
$fileName = 'MySQL_data_bakeup_'.date('YmdHis') . '.sql';
//1.枚举该数据库所有的表
$res = $conn->query("SHOW TABLES FROM $d");
while ($row = mysqli_fetch_row($res)) {
$tables[] = $row[0];
}
mysqli_free_result($res);
//2.枚举所有表的创建语句
foreach ($tables as $val) {
$res = $conn->query("show create table $val");
$row = mysqli_fetch_row($res);
$isDropInfo = "DROP TABLE IF EXISTS `" . $val . "`;\r\n";
$tableStructure = $isDropInfo . $row[1] . ";\r\n";
file_put_contents($fileName, $tableStructure, FILE_APPEND);
mysqli_free_result($res);
}
//3.枚举所有表的INSERT语句
foreach ($tables as $val) {
$res = $conn->query("select * from $val");
// 没有数据的表不执行insert
while ($row = mysqli_fetch_row($res)) {
$sqlStr = "INSERT INTO `".$val."` VALUES (";
foreach($row as $v){
$sqlStr .= "'$v',";
}
//去掉最后一个逗号
$sqlStr = substr($sqlStr, 0, strlen($sqlStr) - 1);
$sqlStr .= ");\r\n";
file_put_contents($fileName, $sqlStr, FILE_APPEND);
}
mysqli_free_result($res);
}
echo '2.数据备份成功!(恢复数据时,要使用备份文件名)备份名文件为:'.$fileName;
?> 2.恢复
select_db($DB);//选择数据库,也可用此法
//print_r($_mysqli);
//执行sql语句
foreach ($_arr as $_value) {
$_mysqli->query($_value.';');
}
$_mysqli->close();
$_mysqli = null;
echo '恢复成功了。';
}
?>
还可以自定义生成数据库的名称,方法就是将sql文件中下面的代码删去: CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 用USE数据库名,然后在text.php中执行所有的sql语句前添加代码。 $_mysqli->query("CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;");
$_mysqli->query("USE 数据库名");
|