PDO ile Veritabanı Yedeği Nasıl Alınır Versiyon 2.10

soulmy php 11.Eyl.2013 153 görüntülenme 4 yorum

PDO'nun kısaca anlatımını daha önceden vermiştim. Şimdi ise MySQL veritabanımızı php ile nasıl yedek alırız, onu göstereceğim.

  • Öncelikle DBBackup.class dosyasını indirin.
  • rar içindeki dosyayı çıkartın.
  • Yeni bir dosya oluşturup içine şu kodları yazın.
<?php
include 'DBBackup.class.php';
$db = new DBBackup(array(
	'driver' => 'mysql',
	'host' => 'localhost',
	'user' => 'root',
	'password' => '',
	'database' => 'teste_backup'
));
$backup = $db->backup();
if(!$backup['error']){
	// Eğer bir dosyaya saklansın istiyorsanız bunu da kullanabilirsiniz.
	// $fp = fopen('file.sql', 'a+');fwrite($fp, $backup['msg']);fclose($fp);
	echo nl2br($backup['msg']);
} else {
	echo 'An error has ocurred.';
}
?>

host, user, password, database bilgilerini kendinize göre düzenleyin. Bu kodların bulunduğu dosyayı çalıştırdığınızda SQL yedek karşınıza çıkacak.

Bundan sonrası size kalmış. İsterseniz echo komutuyla ekrana yazdırmak yerine, bir dosyaya saklayabilir veya mail fonksiyonu ile mailinize yedeği gönderebilirsiniz. Cron Job uygulayarak da her gün düzenli olarak yedek de alabilirsiniz.

Geliştirmek sizin elinizde smile smiley

Güncelleme (03.02.2014)

.class dosyasında önemli bir hata buldum.

DBBackup.class.php dosyasını açın. 148. satırı

$this->handler = new PDO($this->dsn.';charset=UTF8', $this->user, $this->password);

bu şekilde (veritabanınızın charset değeri UTF8 değilse ona göre kendiniz düzenleyin) ve 214. satırı

$value = addslashes($value);

bu şekilde değiştirin.

Yorumlar

Kürşad ALTAN
Hocam o hatayı düzelttim.. Sınıfı localhostta sorunsuz çalıştırdım sunucuya attım fakat Fatal error: Call to a member function query() on a non-object hatası aldım getTables fonksiyonunun $stmt = $this->handler->query('SHOW TABLES'wink smiley; satırında.. Localde çalışıyor problem yok ama sunucuda var.. Nasıl çözebilirim ?
soulmy
Boş veri döndürüyor sanırım. Veritabanını doğru yüklediğinize emin misiniz?
Kürşad ALTAN
Merhaba iyi çalışmalar. Kodu çalıştırıp oluşturduğum sql dosyasını içe aktar yaptığımda hata alıyorum.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '--CREATING TABLE bilgiler
CREATE TABLE `bilgiler` (
`Id` int(11) NOT NULL AUTO' at line 1

sebebi nedir nasıl düzeltirim bilgi verir misiniz ?
soulmy
.sql dosyasındaki kodda yazım hatası olduğu belirtilmiş.