sizlere elimin altında hazır olan çok kullanışlı bir php fonksiyonu göstermek istiyorum bu fonksiyon ile veritabanı yedeklerini phpmyadmine veya panellere girmeden çok kolay bir şekilde alabilirsiniz. tek yapmanız gereken ftp'ye bir php dosyası oluşturmak. ayrıca ssh ile çalışan ve cpanel kullanmayan arkadaşlar için de çok büyük kolaylık
dosyada ki veri tabanı şifre ve isimlerini değiştirmeyi unutmayalım.
dosyada ki veri tabanı şifre ve isimlerini değiştirmeyi unutmayalım.
PHP:
<?php
/**
* @function backupDatabaseTables
* @author Bekchur
* @link http://www.hepsibodrum.com
* @usage PHP Kullanarak MySQL Veritabanını Yedekleme
*/
function backupDatabaseTables($dbHost,$dbUsername,$dbPassword,$dbName,$tables = '*'){
//veritabanı bağlantısı
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
//tüm tabloları alalım
if($tables == '*'){
$tables = array();
$result = $db->query("SHOW TABLES");
while($row = $result->fetch_row()){
$tables[] = $row[0];
}
}else{
$tables = is_array($tables)?$tables:explode(',',$tables);
}
//tablolar içerisinde dönelim
foreach($tables as $table){
$result = $db->query("SELECT * FROM $table");
$numColumns = $result->field_count;
$return .= "DROP TABLE $table;";
$result2 = $db->query("SHOW CREATE TABLE $table");
$row2 = $result2->fetch_row();
$return .= "\n\n".$row2[1].";\n\n";
for($i = 0; $i < $numColumns; $i++){
while($row = $result->fetch_row()){
$return .= "INSERT INTO $table VALUES(";
for($j=0; $j < $numColumns; $j++){
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return .= '"'.$row[$j].'"' ; } else { $return .= '""'; }
if ($j < ($numColumns-1)) { $return.= ','; }
}
$return .= ");\n";
}
}
$return .= "\n\n\n";
}
//dosyayı kaydedelim
$handle = fopen('db-backup-'.time().'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
backupDatabaseTables('localhost','kullanıcıadı','şifre','veritabanı_adı');
?>