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();