主页 M

php数据库备份与恢复,生成sql语句

2021-11-01 网页编程网 网页编程网

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 数据库名");
阅读原文
阅读 2125
123 显示电脑版