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

본문 바로가기

php

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

작성일 20-02-26 13:59

페이지 정보

작성자서방님 조회 50회 댓글 0건

본문

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

backup_tables('localhost','ID','PW','DB');  의 코드를 본인의 계정에 맞게
수정하셔서 쓰시면 됩니다. 
코드를 실행하면 20121111.sql 처럼 파일이 생성됩니다.

<?
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);
	}

	foreach ($tables as $table) {
		$result = mysql_query("SELECT * FROM ".$table);
		$num_fields = mysql_num_fields($result);

		$return.= "DROP TABLE ".$table.";";
		$row2 = mysql_fetch_row(mysql_query("SHOW CREATE TABLE ".$table));
		$return.= "\n\n".$row2[1].";\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";
	}

	$handle = fopen("db-backup-".time()."-".(md5(implode(",", $tables))).".sql", "w+");
	fwrite($handle, $return);
	fclose($handle);
}

backup_tables("localhost", "ID", "PW", "DB");
?>

댓글목록

등록된 댓글이 없습니다.

게시물 검색
Copyright © 서방님.kr All rights reserved.
PC 버전으로 보기