>백엔드 개발 >PHP 튜토리얼 >PHP 데이터 백업: 단일 테이블 백업, 전체 테이블 백업, 데이터베이스 가져오기

PHP 데이터 백업: 단일 테이블 백업, 전체 테이블 백업, 데이터베이스 가져오기

WBOY
WBOY원래의
2016-07-25 09:04:151094검색
';
  • if(is_array($mapping))
  • {
  • foreach($mapping as $key=>$val)
  • echo'
  • ';
  • $results=$this->findBySql('select * from '.$table);
  • foreach($results as $result)
  • {
  • echo'
  • ';
  • foreach($result as $key=>$val)
  • echo'
  • ';
  • 에코'
  • ';
  • }
  • echo'
    1. class Db
    2. {
    3. var $conn;
    4. 함수 Db($host="localhost",$user="root",$pass="root",$db="test")
    5. {
    6. if(!$this- >conn=mysql_connect($host,$user,$pass))
    7. die("mysql 서버에 연결할 수 없습니다.");
    8. mysql_select_db($db,$this->conn);
    9. mysql_query("SET NAMES 'UTF-8'");
    10. }
    11. 함수 실행($sql)
    12. {
    13. return mysql_query($sql,$this->conn);
    14. }
    15. function findCount($sql)
    16. {
    17. $result=$this->execute($sql);
    18. return mysql_num_rows($result);
    19. }
    20. function findBySql($sql)
    21. {
    22. $array=array();
    23. $result=mysql_query($sql);
    24. $i=0;
    25. while($row=mysql_fetch_assoc($result))
    26. {
    27. $array[$i]=$row;
    28. $i ;
    29. }
    30. return $array;
    31. }
    32. //$con적几种情况
    33. //공:返回전체부记录
    34. //배열:eg. array('id'=>'1') 返回id=1的记录
    35. //string :eg. 'id=1' 返回id=1적记录
    36. function toExtJson($table,$start="0",$limit="10",$cons="")
    37. {
    38. $sql= $this->generateSql($table,$cons);
    39. $totalNum=$this->findCount($sql);
    40. $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
    41. $resultNum = count($result);//当前结果数
    42. $str="";
    43. $str.= "{";
    44. $str.= "'totalCount':'$totalNum',";
    45. $str.="'행':";
    46. $str.="[";
    47. for($i=0;$i<$resultNum;$i ){
    48. $str.="{";
    49. $count=count($result[$i]);
    50. $j=1;
    51. foreach($result[$i] as $key=>$val)
    52. {
    53. if($j<$count)
    54. {
    55. $str.="'". $key."':'".$val."',";
    56. }
    57. elseif($j==$count)
    58. {
    59. $str.="'".$key."':'".$val."'";
    60. }
    61. $j ;
    62. }
    63. $str.="}";
    64. if ($i != $resultNum-1) {
    65. $str.= ",";
    66. }
    67. }
    68. $str.="]";
    69. $str.="}";
    70. $str을 반환합니다;
    71. }
    72. 함수 generateSql($table,$cons)
    73. {
    74. $sql="";//sql条件
    75. $sql="select * from ".$table ;
    76. if($cons!="")
    77. {
    78. if(is_array($cons))
    79. {
    80. $k=0;
    81. foreach($cons as $key=>$val)
    82. {
    83. if($k==0)
    84. {
    85. $sql.="where '";
    86. $sql.=$key;
    87. $sql.="'='";
    88. $sql.=$val."'";
    89. }else
    90. {
    91. $sql.="and '";
    92. $sql.=$key;
    93. $sql.="'='";
    94. $sql.=$val."'";
    95. }
    96. $k ;
    97. }
    98. }else
    99. {
    100. $sql.=" 여기서 ".$cons;
    101. }
    102. }
    103. return $sql;
    104. }
    105. 함수 toExtXml($table,$start="0",$limit="10",$cons="")
    106. {
    107. $sql=$this-> ;generateSql($table,$cons);
    108. $totalNum=$this->findCount($sql);
    109. $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
    110. $resultNum = count($result);//当前结果数
    111. header("Content-Type: text/xml");
    112. $xml="n";
    113. $xml.="n";
    114. $xml.="t".$totalNum."n";
    115. $xml.="tn";
    116. for($i=0;$i<$resultNum;$i ){
    117. $xml.="ttn";
    118. foreach($result[$i] as $key=>$val)
    119. $xml.="ttt<".$key.">".$val."n";
    120. $xml.="ttn";
    121. }
    122. $xml.="tn";
    123. $xml.="n";
    124. $xml을 반환합니다.
    125. }
    126. //输出word表格
    127. function toWord($table,$mapping,$fileName)
    128. {
    129. header('Content-type: application/doc');
    130. header('Content-Disposition: attachment; filename="'.$fileName.'.doc"');
    131. echo ' xmlns:w="urn:schemas-microsoft-com:office:word"
    132. xmlns= "http://www.w3.org/TR/REC-html40">
    133. <머리>
    134. '.$fileName.'
    135. ';
    136. echo'<테이블 테두리=1>
    '.$val.' }
  • echo'
  • '.$val.'
    ';
  • echo'';
  • echo'';
  • }
  • function toExcel($table,$mapping,$fileName)
  • {
  • header("Content-type:application/vnd.ms-excel");
  • header("Content-Disposition:filename=".$fileName.".xls");
  • echo' xmlns:x="urn:schemas-microsoft-com:office:excel"
  • xmlns= "http://www.w3.org/TR/REC-html40">
  • <머리>
  • <본문 링크=파란색 vlink=보라색 왼쪽 여백=0 상단 여백=0>';
  • echo'';
  • 에코'
  • ';
  • if(is_array($mapping))
  • {
  • foreach($mapping as $key=>$val)
  • echo'
  • ';
  • $results=$this->findBySql('select * from '.$table);
  • foreach($results as $result)
  • {
  • echo'
  • ';
  • foreach($result as $key=>$val)
  • echo'
  • ';
  • 에코'
  • ';
  • }
  • echo'
  • '.$val.' }
  • echo'
  • '.$val.'
    ';
  • echo'';
  • echo'';
  • }
  • function Backup($table)
  • {
  • if(is_array ($table))
  • {
  • $str="";
  • foreach($table을 $tab으로)
  • $str.=$this->get_table_content($tab);
  • $str을 반환합니다;
  • }else{
  • return $this->get_table_content($table);
  • }
  • }
  • function Backuptofile($table,$file)
  • {
  • header("Content-disposition: filename=$file.sql");//所保存적문명
  • header("콘텐츠 유형: 애플리케이션/옥텟스트림");
  • header("Pragma: no-cache");
  • header("만료일: 0");
  • if(is_array ($table))
  • {
  • $str="";
  • foreach($table을 $tab으로)
  • $str.=$this->get_table_content($tab);
  • 에코 $str;
  • }else{
  • echo $this->get_table_content($table)
  • }
  • }
  • function Restore($table,$file="",$content="")
  • {
  • //파일과 내용이 비어 있거나 둘 다 비어 있지 않은 경우는 제외
  • if(($file==""&&$content=="")||($file!=" " &&$content!=""))
  • echo "매개변수 오류"
  • $this->truncate($table)
  • if($file!="")
  • {
  • if($this->RestoreFromFile($file))
  • return true
  • else
  • return false
  • }
  • if($content!="")
  • {
  • if($this->RestoreFromContent($content))
  • return true;
  • else
  • return false
  • }
  • }
  • //테이블 지우기 데이터를 복원하려면
  • function truncate($table)
  • {
  • if(is_array ($table))
  • {
  • $str=""
  • foreach($table as $tab)
  • $this->execute("TRUNCATE TABLE $tab")
  • }else{
  • $this->execute("TRUNCATE TABLE $table")
  • }
  • }
  • function get_table_content($table)
  • {
  • $results=$this->findBySql("select * from $table")
  • $temp = "";
  • $crlf="
    ";
  • foreach($results as $result)
  • {
  • /*(";
  • foreach($result as $key= >$val)
  • {
  • $schema_insert .= " `".$key."`,"
  • }
  • $schema_insert = ereg_replace(",$", "", $schema_insert );
  • $schema_insert .= ")
  • */
  • $schema_insert = "$table VALUES에 삽입(";
  • foreach($result as $key=>$val)
  • {
  • if($val != "")
  • $schema_insert .= " '".addslashes($val)."',"
  • else
  • $schema_insert .= "NULL," ;
  • }
  • $schema_insert = ereg_replace(",$", "", $schema_insert)
  • $schema_insert .= ");$crlf"
  • $temp = $temp.$schema_insert ;
  • }
  • $temp 반환
  • }
  • function RestoreFromFile($file){
  • if (false !== ($fp = fopen($file, 'r') ))) {
  • $sql_queries = Trim(fread($fp, filesize($file)))
  • $this->splitMySqlFile($pieces, $sql_queries)
  • foreach ($pieces as $query) {
  • if(!$this->execute(trim($query)))
  • return false
  • }
  • return true
  • }
  • return false;
  • }
  • function RestoreFromContent($content)
  • {
  • $content = Trim($content)
  • $this->splitMySqlFile($pieces, $content); 🎜> foreach ($pieces as $query) {
  • if(!$this->execute(trim($query)))
  • return false
  • }
  • return true; }
  • function SplitMySqlFile(&$ret, $sql)
  • {
  • $sql=trimm($sql)
  • $sql=split(';',$sql); 🎜> $arr=array();
  • foreach($sql as $sq)
  • {
  • if($sq!="")
  • $arr[]=$sq; > }
  • $ret=$arr;
  • return true;
  • }
  • $db=new db()
  • // 단어 생성 /$map=array('아니요','이름','이메일','나이')
  • //echo $db->toWord('test',$map,'File')
  • //Excel 생성
  • //$map=array('No','Name','Email','Age')
  • //echo $db->toExcel('test ',$map,'file');
  • // XML 생성
  • //echo $db->toExtXml('test',0,20)// Json 생성
  • //echo $db->toExtJson('test',0,20)
  • //Backup
  • //echo $db->Backuptofile('test', '백업');
  • 코드 복사
  • 2. 테이블 전체 백업
  • 1
  • 2 다음 페이지 마지막 페이지
  • 성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    이전 기사:phpExcel 중국어 도움말 설명서(지식 포인트)다음 기사:phpExcel 중국어 도움말 설명서(지식 포인트)

    관련 기사

    더보기