网上找了下相关代码基本都是有语法错误的,挑了个错误少的改了改
通过测试的环境
CentOS7.1
PHP7.2.10
MySQL5.7.23
Apache 2.4.34
代码如下
<?php set_time_limit(0); header("Content-type:text/html;charset=utf-8");
$cfg_dbhost = 'localhost'; $cfg_dbname = ''; $cfg_dbuser = ''; $cfg_dbpwd = ''; $cfg_db_language = 'utf8'; $to_file_name = "dbname.sql";
$link = mysqli_connect($cfg_dbhost, $cfg_dbuser, $cfg_dbpwd); mysqli_select_db($link, $cfg_dbname);
mysqli_query($link, "set names " . $cfg_db_language);
$tables = mysqli_query($link, "SHOW TABLES FROM " . $cfg_dbname);
$tabList = array(); while ($row = mysqli_fetch_row($tables)) {
$tabList[] = $row[0];
}
echo "运行中,请耐心等待...<br/>";
$info = "-- ----------------------------\r\n"; $info .= "-- 日期:" . date("Y-m-d H:i:s", time()) . "\r\n"; $info .= "-- ----------------------------\r\n\r\n"; file_put_contents('./db_backup/'. $to_file_name, $info, FILE_APPEND);
foreach ($tabList as $val) { $sql = "show create table " . $val . ";"; $res = mysqli_query($link, $sql); $row = mysqli_fetch_array($res); $info = "-- ----------------------------\r\n"; $info .= "-- Table structure for `" . $val . "`\r\n"; $info .= "-- ----------------------------\r\n"; $info .= "DROP TABLE IF EXISTS `" . $val . "`;\r\n"; $sqlStr = $info . $row[1] . ";\r\n\r\n";
file_put_contents('./db_backup/'. $to_file_name, $sqlStr, FILE_APPEND);
mysqli_free_result($res);
}
foreach ($tabList as $val) { $sql = "select * from " . $val . ";"; $res = mysqli_query($link, $sql); if (mysqli_num_rows($res) < 1) { continue; }
$info = "-- ----------------------------\r\n"; $info .= "-- Records for `" . $val . "`\r\n"; $info .= "-- ----------------------------\r\n"; file_put_contents('./db_backup/'. $to_file_name, $info, FILE_APPEND);
while ($row = mysqli_fetch_row($res)) { $sqlStr = "INSERT INTO `" . $val . "` VALUES ("; foreach ($row as $zd) { $sqlStr .= "'" . $zd . "', "; }
$sqlStr = substr($sqlStr, 0, strlen($sqlStr) - 2); $sqlStr .= ");\r\n"; file_put_contents('./db_backup/'. $to_file_name, $sqlStr, FILE_APPEND);
}
mysqli_free_result($res);
file_put_contents('./db_backup/'. $to_file_name, "\r\n", FILE_APPEND);
}
echo "导出成功,文件路径:./db_backup/". $to_file_name; ?>
|