php将mysql数据库整库导出生成sql文件[php代码]

由网上搜到,有更改。

文件名:db_backup.php

源代码如下:

<?php
ini_set("max_execution_time", "180");//避免数据量过大,导出不全的情况出现。

/*

程序功能:mysql数据库备份功能
作者:唐小刚
说明:
本程序主要是从mysqladmin中提取出来,并作出一定的调整,希望对大家在用php编程时备份数据有一定帮助.
如果不要备份结构:请屏掉这句:echo   get_table_structure($dbname,   $table,   $crlf).";$crlf$crlf";
如果不要备份内容:请屏掉这句:echo   get_table_content($dbname,   $table,   $crlf);

修改者:何锦盛
修改时间:2009/11/7
修改内容:新增函数get_table_structure,注释掉了函数get_table_def,目的是获得更丰富的建表时的细节(如:ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='商品信息变更信息')
*/

$host="";//数据库地址

$dbname="";//这里配置数据库名

$username="";//用户名

$passw="";//这里配置密码


$filename=date("Y-m-d_H-i-s")."-".$dbname.".sql";
    header("Content-disposition:filename=".$filename);//所保存的文件名
    header("Content-type:application/octetstream");
    header("Pragma:no-cache");
    header("Expires:0");

//备份数据
    $i   =   0;
    $crlf="\r\n";
     global     $dbconn;
    $dbconn   =   mysql_connect($host,$username,$passw]);//数据库主机,用户名,密码
    $db   =   mysql_select_db($dbname,$dbconn);
mysql_query("SET NAMES 'utf8'");
    $tables =mysql_list_tables($dbname,$dbconn);
    $num_tables   =   @mysql_numrows($tables);
    print   "-- filename=".$filename;
    while($i   <   $num_tables)
    {
      $table=mysql_tablename($tables,$i);
      print   $crlf;
   echo   get_table_structure($dbname,   $table,   $crlf).";$crlf$crlf";
   //echo   get_table_def($dbname,   $table,   $crlf).";$crlf$crlf";
   echo   get_table_content($dbname,   $table,   $crlf);
      $i++;
   }

/*新增的获得详细表结构*/
function get_table_structure($db,$table,$crlf)
{
global   $drop;

     $schema_create   =   "";
     if(!empty($drop)){ $schema_create   .=   "DROP TABLE IF EXISTS `$table`;$crlf";}
    $result   =mysql_db_query($db,   "SHOW CREATE TABLE $table");
    $row=mysql_fetch_array($result);
    $schema_create   .= $crlf."-- ".$row[0].$crlf;
    $schema_create   .= $row[1].$crlf;
    Return $schema_create;
}

/*
//原来别人的取得数据库结构,但不完整
function   get_table_def($db,$table,$crlf)
{
          global   $drop;

          $schema_create   =   "";
          if(!empty($drop))
                  $schema_create   .=   "DROP TABLE IF EXISTS `$table`;$crlf";

          $schema_create   .=   "CREATE TABLE `$table` ($crlf";
          $result   =   mysql_db_query($db,   "SHOW full FIELDS FROM $table");
          while($row   = mysql_fetch_array($result))
          {
                  $schema_create   .= " `$row[Field]` $row[Type]";

                  if(isset($row["Default"])   &&   (!empty($row["Default"])   ||   $row["Default"]   ==   "0"))
                          $schema_create   .=   " DEFAULT '$row[Default]'";
                  if($row["Null"]   !=   "YES")
                          $schema_create   .=   " NOT NULL";
                  if($row["Extra"]   !=   "")
                          $schema_create   .=   " $row[Extra]";
                  if($row["Comment"]   !=   "")
                          $schema_create   .=   " Comment '$row[Comment]'";
                  $schema_create   .=   ",$crlf";
          }
          $schema_create   = ereg_replace(",".$crlf."$",   "",   $schema_create);
          $result   =   mysql_db_query($db,   "SHOW   KEYS   FROM   $table");
          while($row   =   mysql_fetch_array($result))
          {
                  $kname=$row['Key_name'];
                  if(($kname   !=   "PRIMARY")   &&   ($row['Non_unique']   ==   0))
                          $kname="UNIQUE|$kname";
                    if(!isset($index[$kname]))
                            $index[$kname]   =   array();
                    $index[$kname][]   =   $row['Column_name'];
          }

          while(list($x,$columns)   =   @each($index))
          {
                    $schema_create   .=   ",$crlf";
                    if($x   ==   "PRIMARY")
                            $schema_create   .=   "   PRIMARY KEY (".implode($columns,", ") . ")";
                    elseif   (substr($x,0,6)   ==   "UNIQUE")
                          $schema_create   .=   "   UNIQUE   ".substr($x,7)."   ("   .   implode($columns,   ",   ")   .   ")";
                    else
                          $schema_create   .=   "   KEY   $x   ("   .   implode($columns,   ",   ")   .   ")";
          }

          $schema_create   .=   "$crlf)";
          return   (stripslashes($schema_create));
}
*/


//获得表内容
function   get_table_content($db, $table,   $crlf)
{
          $schema_create   =   "";
          $temp   =   "";
          $result   =   mysql_db_query($db,   "SELECT   *   FROM   $table");
          $i   =   0;
          while($row   =   mysql_fetch_row($result))
          {
                  $schema_insert   =   "INSERT INTO `$table` VALUES   (";
                  for($j=0;   $j<mysql_num_fields($result);$j++)
                  {
                          if(!isset($row[$j]))
                                  $schema_insert   .=   " NULL,";
                          elseif($row[$j]   !=   "")
                                  $schema_insert   .=   " '".addslashes($row[$j])."',";
                          else
                                  $schema_insert   .=   " '',";
                  }
                  $schema_insert   =   ereg_replace(",$", "",$schema_insert);
                  $schema_insert   .=   ");$crlf";
                  $temp   =   $temp.$schema_insert   ;
                  $i++;
          }
          return   $temp;
}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值