php替换mysql表前缀

文章描述:

php批量替换MySQL数据库表前缀

1、配置

//设置好相关信息
$servername = "localhost";
//连接的服务器一般为localhost
$username = "root";
//数据库用户名
$password = "root";
//数据库密码
$dbname = "system";
//数据库名
$old_prefix='ecs_';
//数据库的前缀
$new_prefix='sys_';
//数据库的前缀修改为

 

2、检查

if ( !is_string($dbname) || !is_string($old_prefix)|| !is_string($new_prefix) ) {
    return false;
}

 

3、创建链接

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}

 

4、查询表

$result = mysqli_query($conn, "SHOW TABLES FROM ".$dbname);

echo "<pre>";

while ($row = mysqli_fetch_row($result)){

$data[] = $row[0];

}
//print_r($data);

 

5、过滤替换

//过滤要修改前缀的表名
foreach($data as $k => $v) {
    $preg = preg_match("/^($old_prefix{1})([a-zA-Z0-9_-]+)/i", $v, $v1);
    if($preg) {
        $tab_name[$k] = $v1[2];
        //$tab_name[$k] = str_replace($old_prefix, '', $v);
    }
}

if($preg) {
//            echo '<pre>';
//            print_r($tab_name);
//            exit();
    //批量重命名
    foreach($tab_name as $k => $v) {
        $sql = 'RENAME TABLE `'.$old_prefix.$v.'` TO `'.$new_prefix.$v.'`';
        mysqli_query($conn, $sql);
    }
    echo   "数据表前缀:".$old_prefix."<br>"."已经修改为:".$new_prefix."<br>";
} else {
    echo "您的数据库表的前缀".$old_prefix."输入错误。请检查相关的数据库表的前缀";
    if (mysqli_free_result($result)) {

        return true;
    }
}

 

发布时间:2022/05/07

发表评论