我尝试使用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已被弃用,但我必须使用它。
答案 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()
。