这天遇见个需求:由于升级系统 这些系统从A库升级到B库,但是不知道数据库添加了哪些字段和增加了哪些表。当然可以去PHPMYADMIN里浏览一下。但是终究有遗漏吧。所以自己写了个,比较数据库差异的脚本(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
<?
mysql_connect('localhost','root','root');
mysql_select_db('tablea'); //标准的数据库
$q = mysql_query("show tables");
while($s = mysql_fetch_array($q)){
	$name = $s[0];
	$q1 = mysql_query("desc $name");
	while ($s1 = mysql_fetch_array($q1)) {
		$a[$name][] =$s1[0];
	}
}
mysql_close();
 
mysql_connect('localhost','root','root');
mysql_select_db('tableb');//需要比较的数据库
$q2 = mysql_query("show tables");
while($s2 = mysql_fetch_array($q2)){
	$name2= $s2[0];
	$q3 = mysql_query("desc $name2");
	while ($s3 = mysql_fetch_array($q3)) {
		$aa[$name2][] =$s3[0];
	}
 
}
mysql_close();
$f = $e = array();
$str = $fuhao ='';
foreach($a as $k=>$v){
	if(!is_array($aa[$k])){
		$e[] = $k;
	}
	else{
		if(count($aa[$k]) <> count($v)){	
			foreach($v as $k1=>$v1){
				if(!in_array($v1,$aa[$k])){
					$f[$k][] = $v1;
				}
			}
		}
	}
}
echo "<pre>";
print_r($e);//缺少表
print_r($f);//缺少表的字段
 
?>

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP比较数据库差异代码 http://www.chhua.com/web-note2165

随机笔记

更多