PHP代码实现一个数据库中的表结构及内容全部复制到新建的数据库中
时间: 2023-12-29 07:20:50 浏览: 42
可以使用以下 PHP 代码来实现将一个数据库中的表结构及内容全部复制到新建的数据库中:
```php
// 原数据库信息
$source_host = '原数据库主机名';
$source_username = '原数据库用户名';
$source_password = '原数据库密码';
$source_database = '原数据库名';
// 目标数据库信息
$target_host = '目标数据库主机名';
$target_username = '目标数据库用户名';
$target_password = '目标数据库密码';
$target_database = '目标数据库名';
// 连接原数据库
$source_conn = mysqli_connect($source_host, $source_username, $source_password, $source_database);
if (!$source_conn) {
die('连接原数据库失败:' . mysqli_connect_error());
}
// 连接目标数据库
$target_conn = mysqli_connect($target_host, $target_username, $target_password, $target_database);
if (!$target_conn) {
die('连接目标数据库失败:' . mysqli_connect_error());
}
// 获取原数据库所有表名
$tables = mysqli_query($source_conn, 'SHOW TABLES');
if (!$tables) {
die('获取表名失败:' . mysqli_error($source_conn));
}
// 循环复制每个表
while ($table = mysqli_fetch_row($tables)) {
$table_name = $table[0];
// 获取原表结构
$create_table_sql = mysqli_query($source_conn, 'SHOW CREATE TABLE ' . $table_name);
if (!$create_table_sql) {
die('获取表结构失败:' . mysqli_error($source_conn));
}
$create_table_data = mysqli_fetch_assoc($create_table_sql);
$create_table_sql_str = $create_table_data['Create Table'];
// 在目标数据库中创建表
$create_table_result = mysqli_query($target_conn, $create_table_sql_str);
if (!$create_table_result) {
die('在目标数据库中创建表失败:' . mysqli_error($target_conn));
}
// 复制数据
$copy_data_result = mysqli_query($target_conn, 'INSERT INTO ' . $table_name . ' SELECT * FROM ' . $source_database . '.' . $table_name);
if (!$copy_data_result) {
die('复制数据失败:' . mysqli_error($target_conn));
}
}
// 关闭连接
mysqli_close($source_conn);
mysqli_close($target_conn);
```
在代码中,首先需要分别连接原数据库和目标数据库。然后获取原数据库中所有的表名,并循环复制每个表。对于每个表,需要先获取其表结构,然后在目标数据库中创建相应的表,并将原表中的数据复制到目标表中。最后,需要关闭数据库连接。