Php Fonksiyonu ile Veritabanı yedeği almak

bekchur

Üye
Değerlendirme - 0%
Katılım
3 Yıl 4 Ay 13 Gün
Mesajlar
25
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.

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ı');


?>
 

Bu konuyu görüntüleyen kullanıcılar

Üst Alt