Merih Forum Programlama ve yazılım algoritmalar php MySQL/PHP ile Tüm Tabloları Truncate Etme (Temizleme)

  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
MySQL/PHP ile Tüm Tabloları Truncate Etme (Temizleme)

 
#1

Bir projede kurulum yaparken tüm tabloları temizlemem gerekiyor. Tek tek elle yapsam olmaz, tablo adlarını bir diziye aktarıp truncate etsem saçma olur. Bunun için information_schema’ı kullanarak tabloları çektim ve döngüye sokarak temizleme işlemi yaptım. Yani sql sorgum şöyle;
SELECT CONCAT("TRUNCATE TABLE ", table_schema, ".", TABLE_NAME, ";") FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema IN("db_adi", "db_adi2")

Burada concat ile değerleri birleştirince tüm tablolarıma ait otomatik truncate kodu çıkmış oldu. Şimdi bunu php ile birleştirdiğimizde;
<?php
// pdo db bağlantı işlemleri ..

$query = $db->query('SELECT CONCAT("TRUNCATE TABLE ", table_schema, ".", TABLE_NAME, ";") FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN("mvc")')->fetchAll(PDO::FETCH_ASSOC);

foreach ($query as $row){
   echo $db->query(current($row))->fetch();
}

Not: Eğer SQLSTATE[42000]: Syntax error or access violation hatası alıyorsanız, foreach’den önce yani sorguları çalıştırmadan önce FOREIGN_KEY_CHECKS değerini 0’a eşitleyip deneyin. Yani;
<?php
// pdo db bağlantı işlemleri ..

$query = $db->query('SELECT CONCAT("TRUNCATE TABLE ", table_schema, ".", TABLE_NAME, ";") FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN("mvc")')->fetchAll(PDO::FETCH_ASSOC);
$db->query('SET FOREIGN_KEY_CHECKS=0')->fetch();
foreach ($query as $row){
   echo $db->query(current($row))->fetch();
}

İşte bu kadar ? Benim hazırladığım BasicDB sınıfında ise son versiyonunu indirdikten sonra şu şekilde kullanmak yeterli;
<?php
// basicdb bağlantı işlemleri ..
$db->truncateAll();

Bu metod içerisinde AUTO_INCREMENT değerleride 1’den başlayacak şekilde ayarlanıyor. Dilerseniz kendi şu sql sorgusu ile tablolarınızın başlangıç değerlerini de ayarlayabilirsiniz.
ALTER TABLE `db_adi`.`tablo_adi` AUTO_INCREMENT = 1; # 1 ya da kaçtan başlayacaksa o



Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Azure App Service bir PHP (Laray) ve MySQL esnek sunucusu (Önizleme) uygulaması Deli Profesör 1 1,141 28-05-2021, Saat: 23:07
Son Mesaj: dalaylama
  php mysql üyelik Adamantin 0 2,367 21-03-2017, Saat: 21:33
Son Mesaj: Adamantin
  Phpmyadmin MYSQL ihtiyaç duyulan kodlar Adamantin 0 2,637 19-03-2017, Saat: 19:08
Son Mesaj: Adamantin
  mysql veritabanından bilgi çekme ghostwide 0 2,738 25-04-2016, Saat: 18:14
Son Mesaj: ghostwide

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2024 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-∞ Tüm hakları saklıdır.