用php怎么写mysql导出sql文件

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

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

        header( "Content-disposition:   filename=backup.sql ");//所保存的文件名
        header( "Content-type:   application/octetstream ");
        header( "Pragma:   no-cache ");
        header( "Expires:   0 ");

//备份数据

  $i   =   0;
  $crlf= "\r\n ";
  $dbname= "数据库名 ";//数据库名
  global     $dbconn;
  $dbconn   =   mysql_connect( "localhost ", "用户名 ", "密码 ");//数据库主机,用户名,密码
  $db   =   mysql_select_db($dbname,$dbconn);
  $tables   =   mysql_list_tables($dbname,$dbconn);
  $num_tables   =   @mysql_numrows($tables);
        while($i   <   $num_tables)
        {  
                $table   =   mysql_tablename($tables,   $i);

                print   $crlf;
                print   $crlf;

                echo   get_table_def($dbname,   $table,   $crlf). ";$crlf$crlf ";
                echo   get_table_content($dbname,   $table,   $crlf);
                $i++;
        }

//定义抽取表结构与数据


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   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] ";
                $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;
}
?>