행주기씨대종중

홈페이지 관리/운영 자료

php 스크립트로 간단히 mysql 백업하기

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 14,927회 작성일 21-02-22 12:08

본문

https://sir.kr/pg_tip/12522


phpmyadmin 들어가지않고 php로 간단하게 sql 백업 받는 소스

<?php

backup_tables('localhost','ID','PW','DB');

function backup_tables($host,$user,$pass,$name,$tables = '*')

{

  $link = mysqli_connect($host,$user,$pass,$name);

  mysqli_select_db($link,$name);

  //get all of the tables

  if($tables == '*')

  {

    $tables = array();

    $result = mysqli_query('SHOW TABLES');

    while($row = mysqli_fetch_row($link,$result))

    {

      $tables[] = $row[0];

    }

  }

  else

  {

    $tables = is_array($tables) ? $tables : explode(',',$tables);

  }
 
  foreach($tables as $table)

  {

    $result = mysqli_query('SELECT * FROM '.$table);

    $num_fields = mysqli_num_fields($link,$result);


    $return.= 'DROP TABLE '.$table.';';

    $row2 = mysqli_fetch_row($link,mysql_query('SHOW CREATE TABLE '.$table));

    $return.= "\n\n".$row2[1].";\n\n";
 

    for ($i = 0; $i < $num_fields; $i++)

    {

      while($row = mysqli_fetch_row($link,$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";

  }


  $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');

  fwrite($handle,$return);

  fclose($handle);

}

?>

댓글목록

등록된 댓글이 없습니다.


Copyright © KISTORY.NET 2001 - 2025 기회근 개인 홈페이지 All rights reserved.
모바일버전