<?php /* * xiaolin.lu 表结构差异对比, * 目前只比对表及字段 */ //被对比表 $kk_gi_tables = databases_structure('192.168.1.51', 'user', 'password', 'gi'); //对比表 $mosonny_tables = databases_structure('192.168.1.51', 'user', 'password', 'giv_dev'); $different = array(); foreach($mosonny_tables as $m_k => $m_v) { $has_t = false; foreach($kk_gi_tables as $k_k => $k_v) { if ($m_k == $k_k) { $has_t = true; foreach($m_v as $_sub_m_k => $_sub_m_v) { $has_f = false; foreach($k_v as $_sub_k_k => $_sub_k_v) { if (($_sub_m_v[Field] == $_sub_k_v[Field]) && ($_sub_m_v[Type] == $_sub_k_v[Type])) { $has_f = true; break; } } if ($has_f == false) $different[$m_k][] = "*".$_sub_m_v[Field] . "_____" . $_sub_m_v[Type]; } } } if ($has_t == false) { foreach($m_v as $_sub_m_k => $_sub_m_v) { $different["*".$m_k][] = $_sub_m_v[Field] . "_____" . $_sub_m_v[Type]; } } } print_r($different); function databases_structure($host, $user, $password, $dbname) { $link = mysql_connect($host, $user,$password); $result = mysql_list_tables($dbname); $tables_struct = array(); while ($row = mysql_fetch_row($result)) { if ($row[0] != "") { $t_result = mysql_query("SHOW FIELDS FROM ".$row[0]); while($t_row = mysql_fetch_array($t_result)) { $tables_struct[$row[0]][] = $t_row; } } } return $tables_struct; } ?>