Arkadaşlar öncelikle herkese merhaba ve hayırlı ramazanlar.

 

Benim sizlere sormak istediğim konu şudur; mysql ime sunucumdaki sql dosyasının içerisindeki verileri çektirdiğim bir otomatik güncelleme scripti yazdım. İlk yükleme yaparken problem olmuyor sql deki verileri okuyup çok güzel bir şekilde mysql ime yazıyor. Ama daha sonrasında güncelleme yapmak istersem diye bir tane daha değiştirilmiş veritabanının sql ini aldım üzerine yazıyormu diye ama boş değil diye hata aldım. Öncelikle sizinle kodumu ve aldığım hatayı paylaşmak istiyorum sonrasında devam edeceğim detaylı bir şekilde soruma;

$conn =mysqli_connect($DB_HOST,$DB_USER,$DB_PASS,$DB_NAME);
   
$query = '';
$sqlScript = file('vt/mrsheron_metech.sql');
foreach ($sqlScript as $line) {
   
  $startWith = substr(trim($line), 0 ,2);
  $endWith = substr(trim($line), -1 ,1);
   
  if (empty($line) || $startWith == '--' || $startWith == '/*' || $startWith == '//') {
    continue;
  }
    $query = $query . $line;
  if ($endWith == ';') {
    mysqli_query($conn,$query) or die('<div class="error-response sql-import-response">Problem in executing the SQL query <b>' . $query. '</b></div>');
$query= '';
Problem in executing the SQL query CREATE TABLE `admin_user` ( `id` int(11) NOT NULL, `name` text, `pass` text, `mail` text ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Gördüğünüz üzere ve benimde doğru anladığıma göre boş olmadığından dolayı kayıt yapamıyorum diyor. Takdir edersiniz ki zaman ilerledikçe bu tabloların içerisinde girdiler olmaya başlayacak ve ben ilerleyen zamanlarda güncelleme yapmak istediğimde bu içindeki girdileri silmeden yaptığım güncellemeleri bu veritabanına nasıl atabilir, nasıl update edebilirim? Yani şöyle bir sorgu yaptırılabiliyor mu? Bu sql i oku sonra veritabanındaki tüm tablo ve satırları kontrol et eksik olanları ekle gibisinden. Mesela sorgu isimli bir tablom var ve içerisinde farklı sütunlar var id, ad, soyad ve ben bunlar ve içerisindeki girdileri zarar görmeden buraya adresi de ekletmek istiyorum gibi. Ama dediğim gibi bunu sql den nasıl yaptırabilirim. Sonuçta benimki şu anda tertemiz bir sql, ve ben bunu sql i elimde devamlı tutup tüm güncellemelerimi bunun üzerinde yapıp karşı tarafa update yaptırmak istiyorum ama önceden olan hiçbir girdi veya alana dokunmadan sadece içerisinden yeni olanları çekip kaydetmesini yada tabloyu güncellemesini istiyorum.

 

Aslında daha basit bir anlatımla, güncelle dediğimde:

Sql i inceleyecek, veritabanına bakacak;

- Olmayan tablo ve satırları varsa ekleyecek,

- Daha önce olupta silinen tablo varsa silecek

- Tablo içerisindeki id, adi soyadi gibi satırlardan olmayan varsa ekleyecek, silinen varsa silecek,

Ve bunları yaparken mesela daha önce kayıt edilmiş veriler varsa bu verilere dokunmayacak. Bu mümkün müdür? Mümkünse nasıl yapabilirim? Php de çok eski de sayılmam çok yenide, o yüzden baktım baya bi bulamadım.

Yardımcı olabilirseniz çok sevinirim.

 

Bu konuda bana yardımcı olabilecek kimse var mıdır acaba?

 

Teşekkür ederim.