通过PHP批量修改数据库表前缀名称

张子凡 设计开发 2015-07-16 21:28:32 阅读(...) 评论(1)

不论你使用的是哪一款程序,基本上都会有设置数据表前缀,以便于区分数据表。但是有些时候我们需要统一的修改这个前缀名称就变得非常棘手了,这也是子凡在整合多个站点会员用户数据表遇到的一个问题,同样有时候我们可能是在本地调试时直接就使用的默认的前缀,但是我们上线后的网站使用,我们还是会做选择性的修改,那么子凡这里给大家提供一个非常简单的方法。

使用方法:将下面的代码复制到记事本,根据注释信息修改好数据库信息,并保存了 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;
	}
}
?>

除非注明,否则均为泪雪博客原创文章,转载请以链接形式标明本文地址

本文链接:https://zhangzifan.com/php-modify-dbname.html

发表评论

  1. 正山小种的泡法
    1楼
    正山小种的泡法 3年前 (2015-07-17)

    学习了,下次试一下这个方法。