简体   繁体   English

如何为数据库创建备份

[英]How to create a backup for database

I try to create a backup script, with PHP and MySQL, but I have some problems. 我尝试使用PHP和MySQL创建备份脚本,但是我遇到了一些问题。 This is what I have done so far: 到目前为止,这是我所做的:

$sql="SHOW DATABASES"; 
$query=mysql_query($sql,$connect); 
$num_rows=mysql_num_rows($query);
echo "Baze de date:".$num_rows;     

while ($row = mysql_fetch_assoc($query)) {  
    $sql2="SHOW TABLES FROM ".$row['Database']; 
    $query2=mysql_query($sql2, $connect);   
    echo "<h3>".mysql_num_rows($query2)." Tabele in: ".$row['Database']."</h3>";

    while( $row2 = mysql_fetch_assoc($query2) ) { 
        foreach($row as $rand) {
            $sql3="CREATE DATABASE `'$rand'_backup";
            $query3=mysql_query($sql3,$connect);
            foreach($row2 as $rand2) {
                $sql4="CREATE TABLE `'$sql3'_backup`.`'$rand2'` SELECT * FROM `'$rand'`.`'$rand2'`";        
                $query4=mysql_query($sql4,$connect);
            }
        }
    }         
}

As you can see, first I list the existing databases and the tables of each database. 如您所见,首先列出现有数据库和每个数据库的表。 Then I make two foreach , so it can create a database for each database listed, and so on for the tables. 然后,我创建两个foreach ,以便它可以为列出的每个数据库创建一个数据库,以此类推。 But is not working. 但是没有用。

Any idea of what seems to be the problem? 对似乎是什么问题有任何想法吗?

EDIT:I know that mysql is deprecated,but i have to use it. 编辑:我知道不建议使用mysql,但我必须使用它。

All you want to take backup of your database. 您只想备份数据库。 Below commands should do a work for you. 下面的命令应该为您工作。

On Linux 在Linux上

/usr/bin/mysqldump -u{USERNAME} -p -h{HOST_NAME} {DATABSE_NAME} > {FILE_NAME}.sql

On windows 在窗户上

C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump -u{USERNAME} -p -h{HOST_NAME} {DATABSE_NAME} > {FILE_NAME}.sql

Try below code snippet to fix your script: 请尝试以下代码片段来修复脚本:

$sql = "SHOW DATABASES";
$query = mysql_query($sql, $connect);
$num_rows = mysql_num_rows($query);
echo "Baze de date:" . $num_rows;
while ($row = mysql_fetch_assoc($query)) {
    $sql2 = "SHOW TABLES FROM " . $row['Database'];
    $query2 = mysql_query($sql2, $connect);
    echo "<h3>" . mysql_num_rows($query2) . " Tabele in: " . $row['Database'] . "</h3>";

    $sql3 = "CREATE DATABASE `".$row['Database']."_backup`";
    echo '<br> $sql3 = > ' . $sql3 . "<br><hr />";
    $query3=mysql_query($sql3,$connect);

    while ($row2 = mysql_fetch_assoc($query2)) {
        foreach ($row2 as $rand2) {
            $sql4 = "CREATE TABLE `".$row['Database']."_backup`.`".$rand2."` SELECT * FROM `".$row['Database']."`.`$rand2`";
            echo '<br> $sql4 = > ' . $sql4 . "<br><hr />";
            $query4=mysql_query($sql4,$connect);
        }
    }
}

不要使用$row['Database'] ,而要使用数值索引为0的mysql_fetch_row()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM