• 29-06-2021, 02:26:27
    #1
    merhaba

    (localhost) xampp da indirdiğim örnek php kodları denemek için, test db lerinin hepsini otomatik açmak istiyorum.. ve daha sonra da topluca hepsini silmek (veya içlerini boşaltmak) istiyorum. bu konuda yardımınızı rica ediyorum.

    malum user = root pass="" şeklinde

    kendi içinde gelen test db sine birşey eklemeden sıra ile (yani benzer bir kalıb halinde.. bu test da olur tosun001-tosun999 da olabilir....)
    test001 ile test999 şeklinde (utf8) db leri TEK SEFERDE oluşturmak.. ve sonrasında da bu db leri tek seferde silebilmek için bana gerekli döngi kodunu verebilir misiniz ?

    bu arada.. mysql de bu kadar tabloyu açıp içlerini doldurdukdan sonra, datafile lar kendisini otomatik küçültüyor mu (Shrink idi sanırım) ?
  • 29-06-2021, 02:56:59
    #2
    Developer
    mantıken bu şekilde olabilir. testdb1 den testdb10 'a kadar oluşturacaktır.

    edit: diğer fonksiyonları da ekledim.

    create_db: db'yi oluşturur
    remove_db: db'yi siler
    flush_db: db içindeki tabloları siler

    <?php
    function create_db($server,$user,$pass,$db){
    $link = mysqli_connect($server, $user, $pass);
    if (!$link) {
        die('Hata: bağlanılamadı.');
    }
    $db_selected = mysqli_select_db($link, $db);
    if (!$db_selected) {
      $sql = 'CREATE DATABASE '.$db.' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;';
    
      if (mysqli_query($link, $sql)) {
          echo "".$db." adlı veritabanı oluşturuldu.<br>";
      } else {
          echo 'Hata: ' . mysqli_error($link) . "\n";
      }
    }
    mysqli_close($link);
    }
    
    function remove_db($server,$user,$pass,$db){
    $link = mysqli_connect($server, $user, $pass);
    if (!$link) {
        die('Hata: bağlanılamadı.');
    }
    $db_selected = mysqli_select_db($link, $db);
    if ($db_selected) {
        $sql = 'DROP DATABASE '.$db.';';
            if (mysqli_query($link, $sql)) {
              echo "".$db." adlı veritabanı silindi.<br>";
            } else {
              echo 'Hata: ' . mysqli_error($link) . "\n";
            }
    }else {
      echo 'Hata: ' . mysqli_error($link) . "\n";
    }
    }
    
    function flush_db($server,$user,$pass,$db){
    $mysqli = new mysqli($server, $user, $pass, $db);
    $mysqli->query('SET foreign_key_checks = 0');
    if ($result = $mysqli->query("SHOW TABLES"))
    {
        while($row = $result->fetch_array(MYSQLI_NUM))
        {
            $remove = $mysqli->query('DROP TABLE IF EXISTS '.$row[0]);
            if ($remove) {
              echo "".$row[0]." adlı tablo silindi.<br>";
            }
        }
    }
    $mysqli->query('SET foreign_key_checks = 1');
    $mysqli->close();
    }
    
    //flush_db('localhost','root','','testdb1');
    
    $limit = 10;
    
    for ( $i = 1; $i <= $limit; $i++ ){
        //create_db('localhost','root','','testdb'.$i.'');
        //remove_db('localhost','root','','testdb'.$i.'');
    }
    ?>