تالار گفتمان nCIS.ir

نسخه‌ی کامل: Backup گرفتن از دیتابیس
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
<?php
    function backup_db($host, $user, $pass, $name, $tables = '*') {
        date_default_timezone_set('Asia/Tehran');
  
        $return = '';
  
        mysql_connect($host,$user,$pass) or die('Connection error');
        mysql_select_db($name) or die('Database error');
        mysql_query('SET NAMES 'utf8'');
        mysql_set_charset('utf8');
  
        if($tables == '*') {
            $tables = array();
            $result = mysql_query('SHOW TABLES');
            while($row = mysql_fetch_row($result)) {
                $tables[] = $row[0];
            }
            mysql_free_result($result);
        }
        else {
            $tables = is_array($tables) ? $tables : explode(',', $tables);
        }
  
        foreach($tables as $table) {
            $result = mysql_query('SELECT * FROM `'.$table.'`');
            $num_fields = mysql_num_fields($result);
            $return .= 'DROP TABLE IF EXISTS `'.$table.'`;'.PHP_EOL.PHP_EOL;
            $row = mysql_fetch_row(mysql_query('SHOW CREATE TABLE `'.$table.'`'));
            $return .= $row[1].';'.PHP_EOL.PHP_EOL;
  
            for ($i = 0; $i < $num_fields; $i++) {
                while($row = mysql_fetch_row($result)) {
                    $return.= 'INSERT INTO `'.$table.'` VALUES(';
                    for($j = 0; $j < $num_fields; $j++) {
                        $row[$j] = addslashes($row[$j]);
                        $row[$j] = str_replace('n', '\n', $row[$j]);
                        if (isset($row[$j])) {
                            $return .= '''.$row[$j].''';
                        }
                        else {
                            $return .= '''';
                        }
                        if ($j < ($num_fields - 1)) {
                            $return .= ',';
                        }
                    }
                    $return .= ');'.PHP_EOL;
                }
            }
            $return .= PHP_EOL.PHP_EOL.PHP_EOL;
        }
          
        $handle = fopen('db-backup-'.$name.'-'.date('Y,m,d-H,i,s').'.sql', 'w');
        fwrite($handle, $return);
        fclose($handle);
    }
?>

مثالی از نحوه استفاده:

backup_db('localhost', 'root', '', 'your_db_name');