thinkphp 備份類
來(lái)源:易賢網(wǎng) 閱讀:774 次 日期:2014-09-10 10:11:53
溫馨提示:易賢網(wǎng)小編為您整理了“thinkphp 備份類”,方便廣大網(wǎng)友查閱!

<?php

header('Content-type:text/html; charset=utf-8');

Header("Content-type: application/octet-stream");

header("Content-Disposition:attachment; filename=".date( 'YmdHis ').".sql");

class BakAction extends Action{

/**

*返回?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)表

*/

protected function getTable(){

$dbName=C('DB_NAME');

$result=M()->query('show tables from '.$dbName);

foreach ($result as $v){

$tbArray[]=$v['Tables_in_'.C('DB_NAME')];

}

return $tbArray;

}

public function index(){

$table=$this->getTable();

$struct=$this->bakStruct($table);

$record=$this->bakRecord($table);

echo $struct;

echo $record;

}

/**

*備份數(shù)據(jù)表結(jié)構(gòu)

*/

protected function bakStruct($array){

foreach ($array as $v){

$tbName=$v;

$result=M()->query('show columns from '.$tbName);

$sql.="--\r\n";

$sql.="-- 數(shù)據(jù)表結(jié)構(gòu): `$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{

//最后一條不需要","號(hào)

$sql.="`$field` $type $null $default $key $extra \r\n";

}

}

$sql.=")engine=innodb charset=utf8;\r\n\r\n";

}

return str_replace(')',')',$sql);

}

/**

*備份數(shù)據(jù)表數(shù)據(jù)

*/

protected function bakRecord($array){

foreach ($array as $v){

$tbName=$v;

$rs=M()->query('select * from '.$tbName);

if(count($rs)<=0){

continue;

}

$sql.="--\r\n";

$sql.="-- 數(shù)據(jù)表中的數(shù)據(jù): `$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);

}

}

?>

在做FOMS時(shí)需要個(gè)數(shù)據(jù)庫(kù)備份類,但是在thinkphp官網(wǎng)論壇上面好像沒(méi)有這個(gè)東西,隨便弄了個(gè),自我感覺(jué)不是很好,只是能用。

該類需要有thinkphp框架支持。

--------------------------------------分割線----------------------------------------

<?php

protected function bakStruct($array)

{

foreach ($array as $v)

{

$tbName = $v;

//$sql.="DROP TABLE IF EXISTS `$v`;\r\n\r\n";

$result = M()->query('SHOW CREATE TABLE ' . $tbName);

$sql .= $result['0']['Create Table'] . ";\r\n\r\n";

}

return str_replace('CREATE TABLE', 'CREATE TABLE IF NOT EXISTS', $sql);

}

?>

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
上一篇:thinkphp 備份類
易賢網(wǎng)手機(jī)網(wǎng)站地址:thinkphp 備份類
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)