当前位置:首页 > PHP教程 > php高级应用 > 列表

利用php把mysql数据库备份导出成sql示例

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-10 11:11:18 浏览: 评论:0 

用php代码实现数据库备份可以使网站的管理变得非常便捷,我们可以直接进后台操作就能完成数据库的备份.

关键技术:

1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组.

2. show create table 表名 可以获取表结构.

3. select * from 表名 取出所有记录,用循环拼接成 insert into... 语句.

导出成的sql语句效果,具体代码如下:

  1. <?php  
  2.  header("Content-type:text/html;charset=utf-8"); 
  3.  
  4.  //配置信息 
  5.  
  6.  $cfg_dbhost = 'localhost'
  7.  
  8.  $cfg_dbname = 'ftdm'
  9.  
  10.  $cfg_dbuser = 'root'
  11.  
  12.  $cfg_dbpwd = 'root'
  13.  
  14.  $cfg_db_language = 'utf8'
  15.  
  16.  $to_file_name = "ftdm.sql"
  17.  
  18.  // END 配置   
  19.  
  20.  //链接数据库 
  21.  
  22.  $link = mysql_connect($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd); 
  23.  
  24.  mysql_select_db($cfg_dbname); 
  25.  
  26.  //选择编码 
  27.  
  28.  mysql_query("set names ".$cfg_db_language); 
  29.  
  30.  //数据库中有哪些表 
  31.  
  32.  $tables = mysql_list_tables($cfg_dbname); 
  33.  
  34.  //将这些表记录到一个数组 
  35.  
  36.  $tabList = array(); 
  37.  
  38.  while($row = mysql_fetch_row($tables)){ 
  39.  
  40.   $tabList[] = $row[0]; 
  41.  
  42.  } 
  43.  
  44.  
  45.  
  46.  echo "运行中,请耐心等待...<br/>"
  47.  
  48.  $info = "-- ----------------------------rn"
  49.  
  50.  $info .= "-- 日期:".date("Y-m-d H:i:s",time())."rn"
  51.  
  52.  $info .= "-- Power by 代潇瑞博客(http://www.phpfensi.com/read/34.html)rn"
  53.  
  54.  $info .= "-- 仅用于测试和学习,本程序不适合处理超大量数据rn"
  55.  
  56.  $info .= "-- ----------------------------rnrn"
  57.  
  58.  file_put_contents($to_file_name,$info,FILE_APPEND); 
  59.  
  60.  //将每个表的表结构导出到文件 
  61.  
  62.  foreach($tabList as $val){ 
  63.  
  64.   $sql = "show create table ".$val
  65.  
  66.   $res = mysql_query($sql,$link); 
  67.  
  68.   $row = mysql_fetch_array($res); 
  69.  
  70.   $info = "-- ----------------------------rn"
  71.  
  72.   $info .= "-- Table structure for `".$val."`rn"
  73.  
  74.   $info .= "-- ----------------------------rn"
  75.  
  76.   $info .= "DROP TABLE IF EXISTS `".$val."`;rn"
  77.  
  78.   $sqlStr = $info.$row[1].";rnrn"
  79.  
  80.   //追加到文件 
  81.  
  82.   file_put_contents($to_file_name,$sqlStr,FILE_APPEND); 
  83.  
  84.   //释放资源 
  85.  
  86.   mysql_free_result($res); 
  87.  
  88.  } 
  89.  
  90.  
  91.  
  92.  
  93.  //将每个表的数据导出到文件 
  94.  
  95.  foreach($tabList as $val){ 
  96.  
  97.   $sql = "select * from ".$val
  98.  
  99.   $res = mysql_query($sql,$link); 
  100.  
  101.   //如果表中没有数据,则继续下一张表 
  102.  
  103.   if(mysql_num_rows($res)<1) continue
  104.  
  105.   // 
  106.  
  107.   $info = "-- ----------------------------rn"
  108.  
  109.   $info .= "-- Records for `".$val."`rn"
  110.  
  111.   $info .= "-- ----------------------------rn"
  112.  
  113.   file_put_contents($to_file_name,$info,FILE_APPEND); 
  114.  
  115.   //读取数据 
  116.  
  117.   while($row = mysql_fetch_row($res)){ 
  118.  
  119.    $sqlStr = "INSERT INTO `".$val."` VALUES ("
  120.  
  121.    foreach($row as $zd){ 
  122.  
  123.     $sqlStr .= "'".$zd."', "
  124.  
  125.    } 
  126.  
  127.    //去掉最后一个逗号和空格 
  128.  
  129.    $sqlStr = substr($sqlStr,0,strlen($sqlStr)-2); 
  130.  
  131.    $sqlStr .= ");rn"
  132.  
  133.    file_put_contents($to_file_name,$sqlStr,FILE_APPEND); 
  134.  
  135.   } 
  136.  
  137.   //释放资源 
  138.  
  139.   mysql_free_result($res); 
  140.  
  141.   file_put_contents($to_file_name,"rn",FILE_APPEND); 
  142.  
  143.  } 
  144.  
  145.  echo "OK!"
  146.  
  147. ?>

Tags: php导出sql mysql数据库备份

分享到: