Copy MySQL Database With PHP

August 3rd, 2009

PHP script which makes an exact copy of an existing MySQL Database. Creates identical tables as source database as well as coping there data.

<?php

define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

$source_db = "photos";
$new_db = "new_database";

/////////////CONNECT TO SOURCE DATABASE
$link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die(mysql_error());
mysql_select_db($source_db, $link);	

/////////////GET TABLE INFO
$result=mysql_query("SHOW TABLES");
$table_names = array();
while($row = mysql_fetch_array($result))
{
	$table_names[] = $row[0];
}

//////////////CREATE NEW DATABASE
$sql1 = "CREATE DATABASE " . $new_db  or die(mysql_error());
mysql_query($sql1) or die("Failed to create new database:" . mysql_error());;

//////////////COPY TABLES
for($i=0; $i<count($table_names); $i++)
{
	$sql2="DROP TABLE IF EXISTS " . $new_db . "." . $table_names[$i];
	mysql_query($sql2)or die("Failed to delete:" . mysql_error());

	$sql3 = "CREATE TABLE " . $new_db . "." . $table_names[$i] . " SELECT * FROM " . $source_db . "." . $table_names[$i] or die(mysql_error());
	mysql_query($sql3) or die("Failed to create:".mysql_error());
}
echo count($table_names)." tables successfully copied!";

mysql_close();

PHP

  1.  
    No comments yet.
     
Post a Comment
  1. No trackbacks yet.
You must be logged in to post a comment.