如何为数据库创建备份

时间:2014-09-08 06:51:32

标签: php mysql sql database backup

我尝试使用PHP和MySQL创建备份脚本,但是我遇到了一些问题。这是我到目前为止所做的:

$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);
            }
        }
    }         
}

如您所见,首先列出现有数据库和每个数据库的表。然后我创建了两个foreach,因此它可以为列出的每个数据库创建一个数据库,以此类推。但是没有用。

知道什么似乎是问题?

编辑:我知道mysql已被弃用,但我必须使用它。

2 个答案:

答案 0 :(得分:1)

您想要备份数据库。下面的命令应该为你工作。

在Linux上

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

在Windows上

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

尝试以下代码段来修复您的脚本:

$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);
        }
    }
}

答案 1 :(得分:0)

请勿使用$row['Database'],而应使用数字索引为0的mysql_fetch_row()