PHP--修改数据库表前缀

时间:2022-09-22 07:21:37
<?php
// error_reporting(0);
//设置好相关信息
$dbserver='localhost';//连接的服务器一般为localhost
$dbname='jfpay';//数据库名
$dbuser='root';//数据库用户名
$dbpassword='';//数据库密码
$old_prefix='pay_';//数据库的前缀
$new_prefix='new_';//数据库的前缀修改为
if ( !is_string($dbname) || !is_string($old_prefix)|| !is_string($new_prefix) ){
    return false;
}
//PHP5.0开始mysql_connect()就不推荐使用了,到PHP7.0就直接被废弃了
 // mysqli_connect() 
$con = mysqli_connect($dbserver, $dbuser, $dbpassword,$dbname);
if (mysqli_connect_errno($con)) 
{ 
    echo "连接 MySQL 失败: " . mysqli_connect_error(); 
} 


//取得数据库内所有的表名 
//$result = mysql_list_tables($dbname);
//没有mysqli_list_tables()函数,使用mysqli_query() 代替
$result = mysqli_query($con, "SHOW TABLES"); 
if (!$result){
    echo 'MySQL Error: ' . mysqli_error();
    exit;
}

//把表名存进$data
 while ($row = mysqli_fetch_row($result)) {
    $data[] = $row;
}
//过滤要修改前缀的表名
$preg = false;
foreach($data as $k => $v){
    $preg = preg_match("/^($old_prefix{1})([a-zA-Z0-9_-]+)/i", $v[0], $v1);
    if($preg){
        $tab_name[$k] = $v1[2];
    }
}
if($preg){                
     foreach($tab_name as $k => $v){
        $sql = 'RENAME TABLE `'.$old_prefix.$v.'` TO `'.$new_prefix.$v.'`';
        mysqli_query($con, $sql);
    }
    echo  '数据表前缀:'.$old_prefix."已经修改为:".$new_prefix."<br/>";   
}else{ echo '您的数据库表的前缀'.$old_prefix.'输入错误。请检查相关的数据库表的前缀';  
    if ( mysqli_free_result($result) ){
        return true;
    }
}