1. 云栖社区>
  2. PHP教程>
  3. 正文

使用PHP备份MYSQL数据的多种方法

作者:用户 来源:互联网 时间:2017-12-01 19:41:42

数据备份方法

使用PHP备份MYSQL数据的多种方法 - 摘要: 本文讲的是使用PHP备份MYSQL数据的多种方法,  通常情况下,我们都是使用工具备份,比如phpmyadmin、navicat。如果需要使用PHP备份,如何实现呢下面提供两种方法,仅供研究使用。 第1种方法:代码如下:<?php$host="localhost";$user="ro

 通常情况下,我们都是使用工具备份,比如phpmyadmin、navicat。如果需要使用PHP备份,如何实现呢

下面提供两种方法,仅供研究使用。 第1种方法:代码如下:<?php$host="localhost";$user="root";$password="";$dbname="dbname"; mysql_connect($host,$user,$password);mysql_select_db($dbname);$mysql= "set names utf8;";mysql_query($mysql);$q1=mysql_query("show tables");while($t=mysql_fetch_array($q1)){$table=$t[0];$q2=mysql_query("show create table `$table`");$sql=mysql_fetch_array($q2);$mysql.=$sql['Create Table'].";n"; $q3=mysql_query("select * from `$table`");while($data=mysql_fetch_assoc($q3)){$keys=array_keys($data);$keys=array_map('addslashes',$keys);$keys=join('`,`',$keys);$keys="`".$keys."`";$vals=array_values($data);$vals=array_map('addslashes',$vals);$vals=join("','",$vals);$vals="'".$vals."'";$mysql.="insert into `$table`($keys) values($vals);n";}$mysql.="n";}$filename=$dbname.date('Ymj').".sql";$fp = fopen($filename,'w');fputs($fp,$mysql);fclose($fp);echo "数据备份成功,生成备份文件".$filename;?>   第2种方法: 代码如下:<?php$host="localhost";$user="root";$password="";$dbname="dbname";backup_tables($host,$user,$password,$dbname); /* backup the db OR just a table */function backup_tables($host,$user,$pass,$name,$tables = '*'){   $link = mysql_connect($host,$user,$pass);  mysql_select_db($name,$link);   //get all of the tables  if($tables == '*')  {    $tables = array();    $result = mysql_query('SHOW TABLES');    while($row = mysql_fetch_row($result))    {      $tables[] = $row[0];    }  }  else  {    $tables = is_array($tables) ? $tables : explode(',',$tables);  }  $return = '';  //cycle through  foreach($tables as $table)  {    $result = mysql_query('SELECT * FROM '.$table);    $num_fields = mysql_num_fields($result);        $return.= 'DROP TABLE '.$table.';';    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));    $return.= "nn".$row2[1].";nn";     for ($i = 0; $i < $num_fields; $i++)     {      while($row = mysql_fetch_row($result))      {        $return.= 'INSERT INTO '.$table.' VALUES(';        for($j=0; $j<$num_fields; $j++)         {          $row[$j] = addslashes($row[$j]);          $row[$j] = ereg_replace("n","n",$row[$j]);          if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }          if ($j<($num_fields-1)) { $return.= ','; }        }        $return.= ");n";      }    }    $return.="nnn";  }   //save file  $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');  fwrite($handle,$return);  fclose($handle);}?> 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据 , 备份 , 方法 ,以便于您获取更多的相关知识。

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

开发者常用软件,超百款实用软件一站式提供