|  | 
 | ||||||||||||
| MySQL/PHP Schema checking script | 
Here's a PHP script that can be run from the command line to show a database's schema, look for matching fields in different tables, and identify matching field pairs that may be poorly normalized.
...
<?php
//  command -d [database] -h [hostname] -u [user] -p [password] [fieldname] [ fieldname]
//
//  If no field names are provided, displays list of all tables and fields
//  If one field name, displays list of only tables that include at that field
//  If two field names, displays list only of tables that include both field names
//
//  https://bugs.nor1solutions.com/show_bug.cgi?id=2498
$dbname = 'dev';
$host =   'localhost';
$user =   'root';
$passwd = 'root';
for ($i = 1; $i < $_SERVER['argc']; $i++) {
    if ($i === $db) {
        $dbname = $_SERVER["argv"][$i];
        continue;
        }
    if ($i === $hs) {
        $host = $_SERVER["argv"][$i];
        continue;
        }
    if ($i === $us) {
        $user = $_SERVER["argv"][$i];
        continue;
        }
    if ($i === $pw) {
        $passwd = $_SERVER["argv"][$i];
        continue;
        }
    if ($_SERVER["argv"][$i] == '-d') {
        $db = $i + 1;
        continue;
        }
    if ($_SERVER["argv"][$i] == '-h') {
        $hs = $i + 1;
        continue;
        }
    if ($_SERVER["argv"][$i] == '-u') {
        $us = $i + 1;
        continue;
        }
    if ($_SERVER["argv"][$i] == '-p') {
        $pw = $i + 1;
        continue;
        }
    if (!isset($fn))
        $fn = $i;
    if (isset($fn)) {
        if ($i == $fn)
            $m[0] = $_SERVER["argv"][$i];
        if ($i == ($fn + 1 ))
            $m[1] = $_SERVER["argv"][$i];
        continue;
        }
    }
if (!mysql_connect($host, $user, $passwd)) {
    echo 'Could not connect to mysql';
    exit;
}
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);
if (!$result) {
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}
mysql_select_db($dbname) or die("mysql_select() failed");
while ($row = mysql_fetch_row($result)) {
    $query = "select * from ".$row[0]." limit 1";
    if (!isset($m[0]))
        echo "Table: {$row[0]}\n";
    $res2 = mysql_query($query) or die(mysql_error());
    $colqty = mysql_num_fields($res2);
    $t = 0;
    for ($i = 0; $i < $colqty; $i++) {
        if (isset($_SERVER["argv"][2])) {
            if (preg_match("/".$m[0]."/i", mysql_field_name($res2, $i))) {
                $m1 = mysql_field_name($res2, $i);  $t++;
                }
            }
        if (isset($m[1])) {
            if (preg_match("/".$m[1]."/i", mysql_field_name($res2, $i))) {
                $m2 = mysql_field_name($res2, $i);  $t++;
                }
            }
        if (!isset($m[0]))
            echo "\t".mysql_field_name($res2, $i)."\n";
        }
    if (isset($m[1])) {
        if ($t == 2) {
            echo "Table: {$row[0]}\n";
            echo "\t".$m1."\n";
            echo "\t".$m2."\n";
            }
        }
    else if (isset($m[0])) {
        if ($t == 1) {
            echo "Table: {$row[0]}\n";
            if (isset($m1)) echo "\t".$m1."\n";
            if (isset($m2)) echo "\t".$m2."\n";
            }
        }
    unset($m1);
    unset($m2);
    }
mysql_free_result($result);
?>