PHP一键比对更新MYSQL数据库的一些想法

5 篇文章 0 订阅
3 篇文章 0 订阅

帮一个朋友维护CMS,具体的还要有一键远程匹配数据库的功能。


当时给的需求是:


1.能够一键比对远程服务器上的数据库的表和字段。


2.比对完成后,如果发现某表或者某字段缺失,那么就自动生成sql语句,来重新生成一个“补丁”


开始以为很简单,其实还蛮复杂的。


一开始就要进更新服务器(主服务器),感觉有点主从结构,读写分离的味道,233333;


分配好一个专门用来远程比对的mysql用户,并且设置权限为select.


然后再在所有的“从”服务器的代码里面写上这个用户的帐号密码。


比对的代码如下:


//远程对比表的情况
	function compare(){
		    //链接本地数据库
		mysql_connect(C('DB_HOST'),C('DB_USER'),C('DB_PWD')); 
		mysql_select_db(C('DB_NAME')); //标准的数据库 
		$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('182.92.109.88','demoweidogs123','demoweidogs123'); 
		mysql_select_db('demoweidogs123');//需要比较的数据库 
		$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; 
			 } 
		 } 
	 } 
  } 
 } 

然后可以得出结论是否缺少某个表或者某个字段。


至于后续的更新我们以后再写。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值