Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用sql按名称、日期删除多个数据库?_Php_Mysql_Sql_Database - Fatal编程技术网

Php 如何使用sql按名称、日期删除多个数据库?

Php 如何使用sql按名称、日期删除多个数据库?,php,mysql,sql,database,Php,Mysql,Sql,Database,下面的代码列出所有存在的数据库并将它们提取到一个数组中,对于列出的每个数据库的表也是如此。然后它创建新的数据库和表,包含旧数据库和表的每个值,但扩展名为“备份”(某个日期) 这段代码用作备份,但我唯一不知道的是如何删除旧数据库。假设我们今天(2014年9月10日)触发此脚本,这段代码将为名为db1的原始数据库创建一个备份db1_backup-10.0.2014,如果我们今天再次触发它,它将备份以前的备份,这是一件令人讨厌的事情,因此在创建新备份后,我需要删除以前的备份,当然保留原始数据库。。我真

下面的代码列出所有存在的数据库并将它们提取到一个数组中,对于列出的每个数据库的表也是如此。然后它创建新的数据库和表,包含旧数据库和表的每个值,但扩展名为“备份”(某个日期)


这段代码用作备份,但我唯一不知道的是如何删除旧数据库。假设我们今天(2014年9月10日)触发此脚本,这段代码将为名为db1的原始数据库创建一个备份db1_backup-10.0.2014,如果我们今天再次触发它,它将备份以前的备份,这是一件令人讨厌的事情,因此在创建新备份后,我需要删除以前的备份,当然保留原始数据库。。我真的需要你们的帮助。谢谢。

您可以在下面的代码之前添加
删除数据库

$sql="SHOW DATABASES";
$query=mysql_query($sql,$connect);              
while ($row = mysql_fetch_assoc($query)) {
    //Blacklist these to not make backup 
    if(! in_array($row['Database'], array('mysql', 'information_schema', 'performance_schema')) && strpos($row['Database'], "_backup-".$d) === false) {
        $sql2="SHOW TABLES FROM `".$row['Database']."`;";
        $query2=mysql_query($sql2, $connect) or die(mysql_error());
        $dropDb = "DROP DATABASE IF EXISTS `".$row['Database']."_backup-".$d."`";
        mysql_query($dropDb, $connect);
        $sql3 = "CREATE DATABASE `".$row['Database']."_backup-".$d."`";
        $query3=mysql_query($sql3,$connect) or die(mysql_error());                                                    

        while( $row2 = mysql_fetch_assoc($query2) ) {   
          foreach($row2 as $rand2) { 
            $sql4 = "CREATE TABLE `".$row['Database']."_backup-".$d."`.`".$rand2."` SELECT * FROM `".$row['Database']."`.`".$rand2."`";
            $query4=mysql_query($sql4,$connect);
          }              
        }
    }
}
这样,同一日期只有一份备份副本

更新:您得到的是
mysql\u fetch\u assoc()期望参数1是资源
,因为它在$sql2的表名中缺少回号```,并将数据库名称长度保持在16个字符以下


测试和工作

没有人??有什么想法吗?我试图创建的这个脚本对我来说就像一个测试。相信我,如果出于个人目的,我会选择最简单的路径,但我必须这样做,我真的需要一些帮助,因为我非常接近。我会悬赏,但我的代表比我低4分。不起作用:“mysql_fetch_assoc()第78行是“while($row2=mysql\u fetch\u assoc($query2))”是的,我在我的问题中解释了它是如何工作的,以及为什么我需要删除previus backup当然,我在前面所做的之外添加了mysql\u查询,因为没有查询它是无用的,但不起作用,它告诉我errortry
$query3=mysql\u query($sql3,$connect)或die(mysql\u error())并发布你得到的是什么让你这么认为?我在上面看到的代码会先删除数据库(如果存在)
备份
,然后再次创建备份数据库。我只是好奇。你说,你这样做是为了测试。这个测试是什么?是因为你在做新工作还是什么?你有没有考虑过测试的正确答案可能是不要重新发明轮子?我的意思是,如果他们想看看你是一个多么优秀的程序员,肯定有一些更好的“测试”来确定这一点。
$sql="SHOW DATABASES";
$query=mysql_query($sql,$connect);              
while ($row = mysql_fetch_assoc($query)) {
    //Blacklist these to not make backup 
    if(! in_array($row['Database'], array('mysql', 'information_schema', 'performance_schema')) && strpos($row['Database'], "_backup-".$d) === false) {
        $sql2="SHOW TABLES FROM `".$row['Database']."`;";
        $query2=mysql_query($sql2, $connect) or die(mysql_error());
        $dropDb = "DROP DATABASE IF EXISTS `".$row['Database']."_backup-".$d."`";
        mysql_query($dropDb, $connect);
        $sql3 = "CREATE DATABASE `".$row['Database']."_backup-".$d."`";
        $query3=mysql_query($sql3,$connect) or die(mysql_error());                                                    

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