Wednesday, February 23, 2011

Backup database mysql di php

Jika kita mendengar tentang Export database, pasti kita berfikir langsung menuju ke phpmyadmin dan tekan export atau lewat mysqldump. tapi Bagaimana jika Export database menggunakan script php..? tapi tenang saja jangan memikirkan code-code yang sulit,kita hanya memanfaatkan sql query dan perulangan saja. Okey, udah dulu basa-basinya sekarang mari kita mulai buat backup database:
1.Buat database

CREATE DATABASE IF NOT EXISTS `siswa` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `siswa`;

CREATE TABLE IF NOT EXISTS `asset` (
`id` int(11) NOT NULL auto_increment,
`no_absen` varchar(20) default NULL,
`name` varchar(100) default NULL,
`kelas` varchar(50) default NULL,
`Alamat` varchar(50) default NULL,
`description` text,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1640 DEFAULT CHARSET=latin1;
Setelah membuat database dan tabel maka masukanlah data sesuai yang anda inginkan, untuk demo export database.
2.Buat file backup.php
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
  
  $link = mysql_connect($host,$user,$pass);
  mysql_select_db($name,$link);
  
  //get all of the tables
  if($tables == '*')
  {
    $tables = array();
    $result = mysql_query('SHOW TABLES');
    while($row = mysql_fetch_row($result))
    {
      $tables[] = $row[0];
    }
  }
  else
  {
    $tables = is_array($tables) ? $tables : explode(',',$tables);
  }
  
  //cycle through
  

  foreach($tables as $table)
  {
    $result = mysql_query('SELECT * FROM '.$table);
    $num_fields = mysql_num_fields($result);
    
    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
    //$return.= $row2[1].";\n\n";
    $return.= "\n\n".substr($row2[1],0,13).'IF NOT EXISTS'.substr($row2[1],12).";\n\n";
 
    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] = ereg_replace("\n","\\n",$row[$j]);
          if (isset($row[$j])) { $return.= "'".$row[$j]."'" ; } else { $return.= "''"; }
          if ($j<($num_fields-1)) { $return.= ','; }
        }
        $return.= ");\n";
      }
    }
    $return.="\n\n\n\n";
  }
  $tanggal=date("d-F-Y");
  header("Content-Disposition: attachment; filename=backup_db_".$tanggal."_".time("G:i:s").".sql");
  header("Content-type: application/download");
  echo $return;
  exit;

}
Baiklah mungkin itu yang bisa saya berikan, semoga bisa membantu pembeljaran anda. terima kasih.

0 comments:

Post a Comment