Php Fonksiyonu ile Veritabanı yedeği almak

  • Konuyu Başlatan Konuyu Başlatan bekchur
  • Başlangıç tarihi Başlangıç tarihi

bekchur

Üye
Puan 8
Çözümler 0
Katılım
6 Ocak 2021
Tepkime puanı
19
bekchur
Değerlendirme - 0%
0   0   0
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ı');


?>
 
Geri