$fields) {
$result = mysql_query("SHOW COLUMNS FROM `" . $table_name . "`", $db);
while ($row = mysql_fetch_assoc($result)) {
$tables[$table_name][$row['Field']] = $row;
}
}
mysql_close();
$data = array(
'name' => $name,
'time' => time(),
'tables' => $tables
);
return $data;
}
/**
* Compare two schemas (as generated by the 'export' method.)
*
* @param string $schema1 The first database schema.
* @param string $schema2 The second database schema.
* @return array The results of the comparison.
*/
function compare($schema1, $schema2) {
$tables1 = array_keys($schema1['tables']);
$tables2 = array_keys($schema2['tables']);
$tables = array_unique(array_merge($tables1, $tables2));
$results = array();
foreach ($tables as $table_name) {
// Check tables exist in both databases
if (!isset($schema1['tables'][$table_name])) {
$results[$table_name][] = '' . $schema1['name']
. ' is missing table: ' . $table_name
. '
.';
continue;
}
if (!isset($schema2['tables'][$table_name])) {
$results[$table_name][] = '' . $schema2['name']
. ' is missing table: ' . $table_name
. '
.';
continue;
}
// Check fields exist in both tables
$fields = array_merge($schema1['tables'][$table_name],
$schema2['tables'][$table_name]);
foreach ($fields as $field_name => $field) {
if (!isset($schema1['tables'][$table_name][$field_name])) {
$results[$table_name][] = '' . $schema1['name']
. ' is missing field: ' . $field_name
. '
';
continue;
}
if (!isset($schema2['tables'][$table_name][$field_name])) {
$results[$table_name][] = '' . $schema2['name']
. ' is missing field: ' . $field_name
. '
';
continue;
}
// Check that the specific parameters of the fields match
$s1_params = $schema1['tables'][$table_name][$field_name];
$s2_params = $schema2['tables'][$table_name][$field_name];
foreach ($s1_params as $name => $details) {
if ($s1_params[$name] != $s2_params[$name]) {
$results[$table_name][] = 'Field ' . $field_name
. '
differs between databases for parameter \''
. $name . '\'. ' . $schema1['name']
. ' has \'' . $s1_params[$name]
. '\' and ' . $schema2['name']
. ' has \'' . $s2_params[$name] . '\'.';
}
}
}
}
return $results;
}
}
?>