Php 我可以在我的网站上创建一个按钮来备份我的数据库吗?

Php 我可以在我的网站上创建一个按钮来备份我的数据库吗?,php,mysql,sql,database,backup,Php,Mysql,Sql,Database,Backup,我想在我的内容管理系统中设置一个按钮,以便为特定页面上显示的表保存备份sql文件。如果可能的话,我只想把SQL文件下载到我的电脑上。我还想知道是否可以做同样的事情,只是将表数据导出为excel文件 如果对整个数据库进行备份比较容易,我会接受的,我只需要知道这是否可行,以及构建脚本需要什么 希望这是有意义的,我正在努力知道我需要寻找什么,因为我不知道这是否真的可能。我正在用php编写代码 提前感谢。这里有一个小页面,您可以: 检查一下你想要的桌子 下载它们 或者将它们写入磁盘(服务器端) 但是

我想在我的内容管理系统中设置一个按钮,以便为特定页面上显示的表保存备份sql文件。如果可能的话,我只想把SQL文件下载到我的电脑上。我还想知道是否可以做同样的事情,只是将表数据导出为excel文件

如果对整个数据库进行备份比较容易,我会接受的,我只需要知道这是否可行,以及构建脚本需要什么

希望这是有意义的,我正在努力知道我需要寻找什么,因为我不知道这是否真的可能。我正在用php编写代码


提前感谢。

这里有一个小页面,您可以:

  • 检查一下你想要的桌子
  • 下载它们
  • 或者将它们写入磁盘(服务器端)
但是

如果你关心安全,就不应该那样做

如果你想做这种操作,我建议你改用

如果只想在不下载的情况下进行自动备份,最好使用
cron
mysqldump
命令。Cron在许多服务器上配置为每晚进行备份

看看这个:

嗯。以下是PHP页面:

<?

$db_base="set_your_base";
$db=mysql_connect("xxxx","xxxx","xxxx")
or die ("unable to connect");
$select_base=mysql_selectdb($db_base,$db);


function get_para_value($name, $default_value) {
    global $HTTP_GET_VARS, $HTTP_POST_VARS, $_GET, $_POST;
    if( isset($_GET[$name])) {
        return $_GET[$name];
    }
    if( isset($_POST[$name])) {
        return $_POST[$name];
    }
    return $default_value;
}


$action=get_para_value('action', 'ask');

if ($action=='ask') {
    ?>
    <html>
    <body>
    <SCRIPT LANGUAGE="JavaScript">
    var checkflag = "false";
    function check(form) {
        var objCheckBoxes = form.elements;
        if (checkflag == "false") {
            for (i = 0; i < objCheckBoxes.length; i++) {
                objCheckBoxes[i].checked = true;
            }
            checkflag = "true";
            return "Uncheck all";
        } else {
            for (i = 0; i < objCheckBoxes.length; i++) {
                objCheckBoxes[i].checked = false;
            }
            checkflag = "false";
            return "Check all";
        }
    }
    </script>

    <center>

    <form name=dump_form action=dump_dys.php method="post" enctype="multipart/form-data" accept-charset="utf-8">
    <br>
    Choose the tables you want:
    <br>
    <br>
    <input type=button value="Check all" onClick="this.value=check(this.form)">
    <br>
    <br>
    <table>
    <?php
    $sql_tables = "SHOW TABLES";
    $req_tables = mysql_query($sql_tables);
    while (list($table) = mysql_fetch_row($req_tables)) {
        echo "<tr><td><input type=checkbox name=".$table."> ".$table."</td></tr>";
    }
    ?>
    </table>
    <input type=hidden name=action value=dump>
    <br>
    <input type=button value="Download" onClick="this.form.action.value='dump';this.form.submit();">
    &nbsp; <input type=button value="Write on server" onClick="this.form.action.value='dump_to_disk';this.form.submit();">
    </form>
    </center>
    </body>
    </html>
    <?php
} else if ($action=='dump') {
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment;filename=\"$db_base.sql\"");
    header("Content-Transfer-Encoding: binary");
    echo "--\n";
    echo "-- Dump of database $db_base\n";
    echo "--\n";
    $sql_tables = "SHOW TABLES";
    $req_tables = mysql_query($sql_tables);
    while (list($table) = mysql_fetch_row($req_tables)) {
        if (get_para_value($table,'no')=='no') continue;
        echo "\n--\n-- Table $table\n\n";
        echo "DROP TABLE IF EXISTS $table;\n";
        $sql_create_table = "SHOW CREATE TABLE $table";
        $req_create_table = mysql_query($sql_create_table);
        $create_table = mysql_fetch_array($req_create_table);
        echo $create_table[1].";\n";
        echo "\n--\n-- Filling de $table\n\n";
        $sql_fill_table = "SELECT * FROM $table";
        $req_fill_table = mysql_query($sql_fill_table);
        while ($row = mysql_fetch_assoc($req_fill_table)) {
        $line_insert = "INSERT INTO $table (";
        $l_value = ") VALUES (";
        foreach ($row as $field => $value) {
            $line_insert .= "`$field`, ";
            $l_value .= "'".mysql_real_escape_string($value)."', ";
        }
        $line_insert = substr($line_insert, 0, -2);
        $l_value = substr($l_value, 0, -2);
        echo $line_insert.$l_value.");\n";
       }
    }

    echo "--\n";
    echo "-- Dump of base $db_base finished )\n";
    echo "--\n";
} else if ($action=='dump_to_disk') {
    $file = fopen($db_base.".sql", 'w') or die('bug!');
    fwrite($file, "--\n");
    fwrite($file,  "-- Dump of the base $db_base\n");
    fwrite($file,  "--\n");
    $sql_tables = "SHOW TABLES";
    $req_tables = mysql_query($sql_tables);
    while (list($table) = mysql_fetch_row($req_tables)) {
        if (get_para_value($table,'no')=='no') continue;
        fwrite($file,  "\n--\n-- Table $table\n\n");
        fwrite($file,  "DROP TABLE IF EXISTS $table;\n");
        $sql_create_table = "SHOW CREATE TABLE $table";
        $req_create_table = mysql_query($sql_create_table);
        $create_table = mysql_fetch_array($req_create_table);
        fwrite($file,  $create_table[1].";\n");
        fwrite($file,  "\n--\n-- Remplissage de $table\n\n");
        $sql_fill_table = "SELECT * FROM $table";
        $req_fill_table = mysql_query($sql_fill_table);
        while ($row = mysql_fetch_assoc($req_fill_table)) {
        $line_insert = "INSERT INTO $table (";
        $l_value = ") VALUES (";
        foreach ($row as $field => $value) {
            $line_insert .= "`$field`, ";
            $l_value .= "'".mysql_real_escape_string($value)."', ";
        }
        $line_insert = substr($line_insert, 0, -2);
        $l_value = substr($l_value, 0, -2);
        fwrite($file,  $line_insert.$l_value.");\n");
       }
    }
    fwrite($file, "--\n");
    fwrite($file, "-- Dump of base $db_base finished (not even a crash!)\n");
    fwrite($file, "--\n");
    fclose($file);
    echo "dump done";
}
?>

var checkflag=“false”;
功能检查(表格){
var objcheckbox=form.elements;
if(checkflag==“false”){
对于(i=0;i
选择所需的表格:






是的,你可以。但是你需要问一些更具体的问题。您知道如何编写HTML按钮来触发PHP函数吗?您知道如何从PHP连接到数据库吗?你知道如何备份数据库吗?更具体一点,让我们知道我们在回答什么。是的,这是可能的,但并不真正安全。此时,您还可以在服务器上安装(这样做)。至少有一个集成的安全层,这将是更好的,你将自己的代码在一个特定的情况下。我非常自信的html,css和php编程。我的CMS上有我所有的连接和多个帐户的各种安全方法。这个功能将为我的个人管理员,所以我将是它的唯一用户。我目前正在使用myphp管理员,有没有办法从那里自动备份到我的服务器?这对我来说是一个更简单的选择。cron(调度器)mysqlhotcopy(备份)dropbox/email/ftp(存储)@hudds,我想你的问题应该是“如何执行类似PHPMyAdmin导出功能的SQL备份”?谢谢你的帮助,我对这个领域的网站安全性很有信心,但我可能会看看myphp管理员的自动备份。我将有一个剧本围绕这一页,并考虑多一点。