2014-09-10 5 views
-2

В приведенном ниже коде перечислены все существующие базы данных и их выборка в массив, то же самое для таблиц каждой указанной базы данных. Затем он создает новые базы данных и таблицы, содержащие все значения старых db и таблиц, но с th extension _backup- (определенная дата).Как удалить несколько баз данных по имени, дате в sql?

$sql="SHOW DATABASES"; 
$query=mysql_query($sql,$connect);    
while ($row = mysql_fetch_assoc($query)) { 
    $sql2="SHOW TABLES FROM ".$row['Database']; 
    $query2=mysql_query($sql2, $connect);    
    $sql3 = "CREATE DATABASE `".$row['Database']."_backup-".$d."`"; 
    $query3=mysql_query($sql3,$connect);              
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); 
    }    
} 
} 

Этот код работает в качестве резервного, но единственное, что я не могу понять, как бросить старые databases.Lets сказать, мы вызываем этот сценарий сегодня (10.9.2014), и этот код создает backup db1_backup-10.0.2014 для исходной базы данных с именем db1, если мы снова запустим ее сегодня, она сделает резервную копию предыдущей резервной копии, и это неприятная вещь, поэтому мне нужно отбросить предыдущую резервную копию после того, как новая резервная копия создал и сохранил исходный db, конечно,. Я мог бы действительно помочь вам, ребята, пожалуйста. Спасибо.

+0

no one ?? Есть идеи?? – Memphistoles

+0

этот скрипт, который я пытаюсь создать, как тест для меня. Поверьте мне, что я выбрал бы самый простой путь, если бы это было для личных целей, но я должен сделать это так, и мне действительно нужна помощь, потому что я очень близок. Я бы поставил щедрость, но мой представитель на 4 пункта ниже. – Memphistoles

ответ

1

Вы можете добавить DROP DATABASE прежде, чем ниже код

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

Таким образом, будет существовать только один экземпляр резервной копии на ту же дату

Update: Вы получаете mysql_fetch_assoc() expects parameter 1 to be resource, потому что не хватает назад клещей ` `в имени таблицы $ sql2 & сохранить длину имени базы данных ниже 16 символов

Протестировано и работает

+0

не работает: «mysql_fetch_assoc() ожидает, что параметр 1 будет ресурсом в строке 78», строка 78 - это «while» ($ row2 = mysql_fetch_assoc ($ query2)) » – Memphistoles

+0

работает ли ваш код без переменной' $ dropDb'? – Saqueib

+0

Да, я объяснил в своем вопросе, как это работает, и почему мне нужно отказаться от резервного копирования предыства – Memphistoles

Смежные вопросы