<?php
/*-------------------------------------------
MySQL veritabanı yedekleme kodu
Aşağıdaki değişkenleri ayarlayın
Kullanımdan doğacak hatalardan yazar sorumlu tutulamaz
* MySQL 3.23.20 veya üzeri bir veritabanı sunucunuz olmalı

Osman Yüksel  11.02.2005
--------------------------------------------*/
$vthost="localhost";    //veritabanı host
$vtkullanici="root";    //veritabanı kullanıcı adı
$vtsifre="12345678";        //veritabanı şifresi
$vtadi="wwwp";        //yedeklenecek veritabanı adı
$ara="";        /*--eğer sadece belli bir önek veya belli bir tablonun
            //yedeklenmesini istiyorsanız bunu kullanabilirsiniz
            ara="aranacak" gibi bir değer belirlerseniz sadece
            içersinde "aranacak" geçen tablolar yedeklenecektir*/
$dosya_adi="yedek.sql";    //yedeklerin yazılacağı dosya

/*------------------------------------*/

if(!is_writeable(".")) echo "Yazma izniniz bulunmuyor";
else
{
  $baglan=mysql_connect($vthost,$vtkullanici,$vtsifre);
  $sec=mysql_select_db($vtadi,$baglan);
  if(!$sec) { echo "Veritabanına bağlanılamadı"; }
  else
    {
      $tablolar=mysql_list_tables($vtadi);  //tablo listesi
      $tablosayisi=mysql_num_rows($tablolar); //veritabanındaki tablo sayısını bul
      for ($a=0;$a<$tablosayisi;$a++)
    {  // her tablo için işlem yap
      $row=mysql_fetch_row($tablolar);
      if(preg_match("/$ara/", $row[0]))
        {  //sadece belirli ön ekle başlayanları al
          $tablename=$row[0];
          $crtable=mysql_query("show create table $tablename");
          //her tablo için show create table komutu ile iste
          //bu özellik MySQL 3.23.20 den itibaren var
          $tmpres = mysql_fetch_row($crtable);
          $cikti .= $tmpres[1].";";  //create table'ların sonuna ; koy
          $cikti .= "\n\n\n";  //create table komutlarından sonra 3 satır boşluk ver
          $alanlar=mysql_query("select * from `$tablename`");
          //her field için insert into komutlarını hazırla
          $alansayisi=mysql_num_fields($alanlar);  //alan sayısı
          $nr=mysql_num_rows($alanlar);  //row sayısı
          for ($c=0;$c<$nr;$c++)
        { //her row için
          $cikti .= "insert into `$tablename` values (";
          $row=mysql_fetch_row($alanlar);  //alan adlarını ' karakterleriyle yazdır
          for ($d=0;$d<$alansayisi;$d++)
            {
              $data=strval($row[$d]);
              $cikti .="'".addslashes($data)."'";  // ' i kontrol için
              if ($d<($alansayisi-1))
            {
              $cikti .=", ";  //her alan için araya virgül koy
            } #if
            } #for
                $cikti .=");\n"; // parantezi kapat
        } #for
        } #if ->ön ekleri al
    } #if  ->her tablo için


      $yaz=fopen($dosya_adi, "w");  //$cikti'yi $dosya_adi'na yazdir
      fwrite($yaz,$cikti);
      fclose($yaz);
      echo "Veritabanı yedeği $dosya_adi dosyasına kaydedildi";

    } #else  -> veritabanı bağlantı kontrolü

    mysql_close($baglan);
} #else  yazma kontrolü