不论你使用的是哪一款程序,基本上都会有设置数据表前缀,以便于区分数据表。但是有些时候我们需要统一的修改这个前缀名称就变得非常棘手了,这也是子凡在整合多个站点会员用户数据表遇到的一个问题,同样有时候我们可能是在本地调试时直接就使用的默认的前缀,但是我们上线后的网站使用,我们还是会做选择性的修改,那么子凡这里给大家提供一个非常简单的方法。
使用方法:将下面的代码复制到记事本,根据注释信息修改好数据库信息,并保存了i.php。再上传到网站根目录运行即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php //设置好相关信息 $dbserver='localhost';//连接的服务器一般为localhost $dbname='dbname';//数据库名 $dbuser='dbusername';//数据库用户名 $dbpassword='password';//数据库密码 $old_prefix='old_';//数据库的前缀 $new_prefix='new_';//数据库的前缀修改为 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; } } ?> |
除非注明,否则均为泪雪博客原创文章,禁止任何形式转载
留言评论