system('mysqldump -u username -p password dbname>data.sql');

解决方案 »

  1.   

    但我得到的data.sql的大小为0字节,不知道为什么!???
      

  2.   

    通过system() 或者exec()执行外部的数据库备份命令应该差不多了.
      

  3.   

    exec('C:/Mysql/bin/mysqldump -u root -pPassWord guestbook > C:/Mysql/bin/data.sql'); //存放的路径跟mysqldump的路径一定要指明
      

  4.   

    打错了,上面的guestbook是你的数据库的名字
    如果你想具体导出数据库中的某个表的话在数据库后面加表名就可以了e.g.exec('C:/Mysql/bin/mysqldump -u root -pPassWord database table > C:/Mysql/bin/data.sql');
      

  5.   

    看看我的。你把PW_*变量改成你自己的就可以了。呵呵。
    在win下应该把mysqldump.exe和mysql.exe拷贝到当前目录下。
    <?
    $backup_dir = "backup"; //备份文件所在目录
    $file = $_GET['file'];
    if($_SERVER['REQUEST_METHOD']=="POST"){
    switch(PW_DB_TYPE){
    case "mysql":
    $datadir = getcwd();
    $filename = date("Y-m-d_H_i_s",time()).".sql";
    if (substr(PHP_OS, 0, 3) == 'WIN'){
    $cmd = getcwd()."\\mysqldump.exe --tables -u ".PW_DB_USER." -p".PW_DB_PASS." -r $datadir\\backup\\$filename --no-create-db  --add-locks --opt --add-locks -c ".PW_DB_NAME;
    }else{

    $cmd = "/usr/local/bin/mysqldump --tables -u ".PW_DB_USER." -p".PW_DB_PASS." -r $datadir/backup/$filename --no-create-db  --add-locks --opt --add-locks -c ".PW_DB_NAME;
    }
    str_replace("\\","/",$cmd);
    set_time_limit(0); shell_exec($cmd);
    //passthru($cmd);
    break;
    default:
    echo "不能备份";
    break;
    }
    }// 删除备份
    if( ($_GET['op']=="DEL")&&($_GET['file']!="") ) {
    @unlink($backup_dir."/".$_GET['file']);
    }// 恢复数据
    if( ($_GET['op']=="BACKUP")&&($_GET['file']!="") ){
    if (substr(PHP_OS, 0, 3) == 'WIN'){
    $cmd=getcwd()."\\mysql.exe -u ".PW_DB_USER." -p".PW_DB_PASS." -D ".PW_DB_NAME." <$backup_dir\\$file";
    }else{
    $cmd="/usr/local/bin/mysql -u ".PW_DB_USER." -p".PW_DB_PASS." -D ".PW_DB_NAME." <$backup_dir/$file";
    }
    str_replace("\\","/",$cmd);
    set_time_limit(0);
    shell_exec($cmd);
    //passthru($cmd);
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    alert("数据恢复成功!");
    </SCRIPT>
    <?
    }
    ?>