PHPWPS

 找回密码
 立即加入

QQ登录

只需一步,快速开始

搜索
热搜: php discuz
查看: 7680|回复: 0

[PHP] php批量修改表前缀

[复制链接]

280

主题

420

帖子

1970

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1970
发表于 2014-9-7 11:55:41 | 显示全部楼层 |阅读模式
直接上代码
  1. <?php
  2.         //设置好相关信息
  3.         $dbserver='localhost';//连接的服务器一般为localhost
  4.         $dbname='dbname';//数据库名
  5.         $dbuser='dbuser';//数据库用户名
  6.         $dbpassword='pass';//数据库密码
  7.         $old_prefix='old_';//数据库的前缀
  8.         $new_prefix='new_';//数据库的前缀修改为

  9.         if ( !is_string($dbname) || !is_string($old_prefix)|| !is_string($new_prefix) ){
  10.                 return false;
  11.         }
  12.   
  13.         if (!mysql_connect($dbserver, $dbuser, $dbpassword)) {
  14.                 print 'Could not connect to mysql';
  15.                 exit;
  16.         }

  17.         //取得数据库内所有的表名
  18.         $result = mysql_list_tables($dbname);
  19.   
  20.         if (!$result) {
  21.                 print "DB Error, could not list tables\n";
  22.                 print 'MySQL Error: ' . mysql_error();
  23.                 exit;
  24.         }
  25.        
  26.         //把表名存进$data
  27.         while ($row = mysql_fetch_row($result)) {
  28.                 $data[] = $row[0];
  29.         }

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

  39.         if($preg){
  40.                 //        echo '<pre>';
  41.                 //        print_r($tab_name);
  42.                 //        exit();
  43.                 //批量重命名
  44.                 foreach($tab_name as $k => $v){
  45.                         $sql = 'RENAME TABLE `'.$old_prefix.$v.'` TO `'.$new_prefix.$v.'`';
  46.                         mysql_query($sql);
  47.                 }

  48.                 print  '数据表前缀:'.$old_prefix."<br>".'已经修改为:'.$new_prefix."<br>";
  49.         }else{
  50.                 print '您的数据库表的前缀'.$old_prefix.'输入错误。请检查相关的数据库表的前缀';
  51.                 if ( mysql_free_result($result) ) {
  52.                         return true;
  53.                 }
  54.         }
  55. ?>
复制代码

直接可以拿去用,记得修改顶部的相关数据库连接信息以及表原始前缀和新的前缀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|小黑屋|手机版|Archiver|phpwps Inc. ( 鄂ICP备14011625号-1 )

GMT+8, 2025-5-4 15:58 , Processed in 0.052527 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表