如何用php代码导出备份的sql文件
意思就是。运行Php程序代码,将数据库备份成sql文件。就像直接点phpmyadmin的导出.sql文件

解决方案 »

  1.   

    你从 phpmyadmin 抠出代码不就可以了?
      

  2.   

    一点思路,希望有用
    function dump_database($database_name, $save_path = './'){
       ini_set('max_execution_time', 0);
    echo '备份开始...<br>';
    echo '===================================================<br>';
    $time = explode(' ', microtime());
    $start_time = $time[1] + $time[0];
    //打开或创建一个用来存放备份数据库代码的文件
    $fo = @fopen($save_path.$database_name.'.sql', 'a');
    if($fo === false){
    echo '文件找不到,或您没有权限打开该文件!';
    } //连接数据库
    $link = @mysql_connect('localhost', 'root', 'root') or die('数据库连接失败,error:'.mysql_error()); //获取该数据库中的表
    $ret = mysql_list_tables($database_name);
    $table_list = array();
    while($table = mysql_fetch_assoc($ret)){
    $table_list[] = $table['Tables_in_'.$database_name];
    echo '<span id="'.$table['Tables_in_'.$database_name].'">'.$table['Tables_in_'.$database_name].'</span><br>';
    }
    foreach($table_list as $table){
    //获取当前表被创建时的sql语句
    $sql = 'show create table '.$table;
    $create_table_ret = mysql_fetch_assoc(mysql_query($sql));
    $create_table_sql = 'drop table if exists '.$table.";\n";
    $create_table_sql .= $create_table_ret['Create Table'].";\n";
    //获取当前表中的数据并组成插入形式的sql语句
    $sql = 'select * from '.$table;
    $insert_data_ret = mysql_query($sql);
    $insert_data_sql = 'insert into '.$table.' values';
    while($row = mysql_fetch_assoc($insert_data_ret)){
    $insert_data_sql .= '(';
    foreach($row as $key => $val){
    $insert_data_sql .= '"'.mysql_real_escape_string($val, $link).'",';
    }
    $insert_data_sql = rtrim($insert_data_sql, ',').'),';
    }
    $insert_data_sql = rtrim($insert_data_sql, ',').";\n\n\n";
    if(!mysql_num_rows($insert_data_ret)){
    $create_table_sql .= "\n\n";
    }
    fwrite($fo, $create_table_sql);
    if(mysql_num_rows($insert_data_ret)){
    fwrite($fo, $insert_data_sql);
    }
    $innerHTML = $table."[<span style='color: green'>备份完成!</span>]";
    $script = '<script>';
    $script .= 'document.getElementById("'.$table.'").innerHTML = "'.$innerHTML.'";';
    $script .= '</script>';
    echo $script;
    }
    fclose($fo);
    $time = explode(' ', microtime());
    $end_time = $time[1] + $time[0];
    echo '<b>备份完成(共计<span style="color: red">'.count($table_list).'</span>个表),花费时间为:<span style="color: red">', $end_time - $start_time, '</span>秒!</b>';
    }dump_database('mysql', 'd:/');
      

  3.   

    其实简单点就是用 php 调用 phpdump
      

  4.   

    啊!!!上面打错了。应该是  mysqldump