//备份数据库
public function index()
{
$session = $_SESSION['userName'];
if(empty($session)) $this->ajaxReturn('','未登录!',-1);
$dbName=C('DB_NAME');
$table = array();
$table = $this->_post('checked');
$record=$this->bakRecord($table);
$path ='./Down/Data/';
$rand = rand(1000,9999);
$filename = $dbName.date("Ymd").'_'.$rand.'.sql';
$fp = fopen($path.$filename,'w');
fwrite($fp,$record);
fclose($fp);
$tableSize = M()->query("show table status from ".$dbName);
$num = array();
foreach($tableSize as $k =>$val){
foreach($table as $k => $v){
if($val['Name'] == $v){
$num[$val['Name']] = round(($val['Data_length']+$val['Index_length'])/1024,1);
}
}
}
$date = date('Y-m-d H:i:s');
$result = M()->query("insert into car_datapath(date,path,filename,size) values ('".$date."','".$path."','".$filename."','".array_sum($num)."')");
$this->ajaxReturn('','',1);
}
protected function bakRecord($array){
$db = M();
foreach ($array as $v){
$tbName=$v;
$result=$db->query('show columns from '.$tbName);
$sql.="--\r\n";
$sql.="-- 数据表结构: `$tbName`\r\n";
$sql.="--\r\n\r\n";
$sql.="create table `$tbName` (\r\n";
$rsCount=count($result);
foreach ($result as $k=>$v){
$field = $v['Field'];
$type = $v['Type'];
$default= $v['Default'];
$extra = $v['Extra'];
$null = $v['Null'];
if(!($default=='')){
$default='default '.$default;
}
if($null=='NO'){
$null='not null';
}else{
$null="null";
}
if($v['Key']=='PRI'){
$key = 'primary key';
}else{
$key = '';
}
if($k<($rsCount-1)){
$sql.="`$field` $type $null $default $key $extra ,\r\n";
}else{
//最后一条不需要","号
$sql.="`$field` $type $null $default $key $extra \r\n";
}
}
$sql.=")engine=innodb charset=utf8;\r\n\r\n";
}
foreach ($array as $v){
$tbName=$v;
$rs=$db->query('select * from '.$tbName);
if(count($rs)<=0){
continue;
}
$sql.="--\r\n";
$sql.="-- 数据表中的数据: `$tbName`\r\n";
$sql.="--\r\n\r\n";
foreach ($rs as $k=>$v){
$sql.="INSERT INTO `$tbName` VALUES (";
foreach ($v as $key=>$value){
if($value==''){
$value='null';
}
$type=gettype($value);
if($type=='string'){
$value="'".addslashes($value)."'";
}
$sql.="$value," ;
}
$sql.=");\r\n\r\n";
}
}
return str_replace(',)',')',$sql);
}