首页技术博客 技术经验 正文

批量修改mysql的表前缀名称及代码!

2017-10-09 1243 0条评论

在创建网站中,尝尝有站长因为修改前缀而烦恼,

下面 符文浩交给大家一个方法来帮助大家修改MYSQL数据库!!


Mysql数据库表前缀,这个是我们区分其它表的一个方式,当我们同一个数据库中含有多个系统的的时候,表前缀就却分的唯一标识。我们使用php开源程序安装建站的时候,一般数据库表前缀都是默认设置好的,如:wordpress的默认数据库表前缀是wp_,echosp的默认数据库表前缀是ecs_,discuz的默认数据库表前缀是pre_,织梦内容管理系统(dede)的默认数据库表前缀是dede_。在其官方安装教程中或开源系统安全安装方法中,都建议在安装的时候,建议修改这个天下人皆知的默认表前缀。如果您不留神,已经使用了默认的表前缀怎么办?有办法改吗?


工具:

  • 文本工具(Notepad++)任意一款文本文档工具都可以,不过最好不要用window自带的文本工具,这个设置会导致乱码。

  • 一款支持PHP的空间带mysql


  1. 用文本工具新建一个文本文件,比如1.php

  2. 用Notepad++编辑1.php

  3. 输入以下代码,并按照要求修改好数据库相关信息.


  4. <?php
    //设置好相关信息
    $dbserver='localhost';//连接的服务器一般为localhost
    $dbname='icka459c7h_blog';//数据库名
    $dbuser='icka459c7h_blog';//数据库用户名
    $dbpassword='admin';//数据库密码
    $old_prefix='idcfu_';//数据库的前缀
    $new_prefix='fuwenhao_';//数据库的前缀修改为
    if ( !is_string($dbname) || !is_string($old_prefix)|| !is_string($new_prefix) )
       {
                           return false;
                   }
      
               if (!mysql_connect($dbserver, $dbuser, $dbpassword)) {
                   print 'Could not connect to mysql';
                   exit;
               }
                   //取得数据库内所有的表名
               $result = mysql_list_tables($dbname);
      
               if (!$result) {
                   print "DB Error, could not list tables\n";
                   print 'MySQL Error: ' . mysql_error();
                   exit;
               }
                   //把表名存进$data
               while ($row = mysql_fetch_row($result)) {
                   $data[] = $row[0];
               }
                   //过滤要修改前缀的表名
                   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.'`';
                    mysql_query($sql);
      
              }
    print  数据表前缀:.$old_prefix."<br>".已经修改为:.$new_prefix."<br>";
      
    }
    else
    { print 您的数据库表的前缀.$old_prefix.输入错误。请检查相关的数据库表的前缀;
      
               if ( mysql_free_result($result) ) {
                 return true;
               }
    }
    ?>
  5. 保存文件,最好是修改文件的编码为utf8,Notepad++修改为utf-8的方法为工具栏-格式-修改为utf8编码格式。

上传到空间。并访问。

文章版权及转载声明

本文作者:符文浩 网址:http://blog.fuwenhao.com/post/7.html 发布于 2017-10-09
文章转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:

评论列表 (暂无评论,1243人围观)参与讨论

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码