<?php
/**
* 数据库备份模块
*
* 主要用于导出数据库
*
**/
class backupDBAction extends Action {
/**
* 操作本地数据库
*
* @return bool true|false
*
**/
public function exportMySql() {
// 初始化
$M = new Model();
$dataBase = C('DB_NAME');
// 查找当前数据库所有表
$tables = $M->query("show tables");
$mysql .= "CREATE DATABASE /*!32312 IF NOT EXISTS*/`$dataBase` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */;\r\n\r\nUSE `$dataBase`;\r\n\r\n";
foreach ($tables as $key => $value) {
// 获取表名称
$table = $value['Tables_in_'.C('DB_NAME')];
// 获取创建表数据
$table_data = $M->query("show create table `$table`");
// 写入备份数据库
$mysql .= "DROP TABLE IF EXISTS `$table`;\r\n";
$mysql .= $table_data[0]['Create Table'].";\r\n\r\n";
// 获取表数据内容
$table_content = $M->query("select * from `$table`");
// print_r($table_content);
foreach ($table_content as $k => $v) {
$keys = array_keys($v);
$keys = array_map('addslashes',$keys);
$keys = join("`,`",$keys);
$keys = "`".$keys."`";
$vals = array_values($v);
$vals = array_map('addslashes',$vals);
$vals = join("','",$vals);
$vals = "'".$vals."'";
$mysql.="insert into `$table`($keys) values($vals);\r\n";
}
$mysql.="\r\n";
}
// print_r("<pre >");
// print_r($mysql);
$filename=date('Y-m-d').".sql"; //文件名为当天的日期
// print_r($filename);
$fp = @fopen($filename,'w');
@fputs($fp,$mysql);
@fclose($fp);
echo "back up, just ok !".$filename;
}
?>
基于 ThinkPhp 框架下导出MySql数据库内容
最新推荐文章于 2023-09-25 15:15:38 发布