RapidMod icon

Table Compare

RapidMod | PRO | 07/13/16 06:46:21 PM UTC | 0 ⭐ | 284 👁️ | Never ⏰ | []
PHP |

3.15 KB

|

None

|

0 👍

/

0 👎

$allColumns = array(
            "primary" => array(),
            "secondary" => array()
        );
        $commonColumns = array(
            "primary" => array(),
            "secondary" => array()
        );
 
        $missingColumns = array(
            "primary" => array(),
            "secondary" => array()
        );
 
        $missingTableColumns = array(
            "primary" => array(),
            "secondary" => array()
        );
 
        $tableInfo = array(
            "primary" => array(),
            "secondary" => array()
        );
$query = "SHOW TABLES LIKE '%_piece%';";
$primary = "primary"; //or secondary?
        while($row = $stmnt->fetch(PDO::FETCH_ASSOC)){
            //echo get_called_class()."<pre>".print_r($row,1)."</pre>";
            $table = $row["Tables_in_name (%_piece%)"];
            if(stristr($table,"_secondary")){
                $primary = "secondary";
            }else{
                $primary = "primary";
            }
            $columns;
            $subquery = "DESCRIBE {$table};";
            $substmnt = $newDB->connection()->prepare($subquery,array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
            $substmnt->execute(array());
            $columns = array();
            while($subrow = $substmnt->fetch(PDO::FETCH_ASSOC)){
                $allColumns[$primary][$subrow["Field"]] = $subrow["Field"];
                $columns[] = $subrow["Field"];
            }
            $tableInfo[$primary][$table] = $columns;
        }
        foreach ($allColumns["primary"] as $col){
            $commonColumns["primary"][$col] = $col;
        }
        foreach ($allColumns["secondary"] as $col){
            $commonColumns["secondary"][$col] = $col;
        }
 
        foreach ($tableInfo["primary"] as $table => $columns){
            foreach ($commonColumns["primary"] as $col){
                if(!in_array($col,$columns)){
                    unset($commonColumns["primary"][$col]);
                    $missingColumns["primary"][] = $col;
                }
            }
 
        }
 
        foreach ($tableInfo["secondary"] as $table => $columns){
            foreach ($commonColumns["secondary"] as $col){
                if(!in_array($col,$columns)){
                    unset($commonColumns["secondary"][$col]);
                    $missingColumns["secondary"][] = $col;
                }
            }
 
        }
 
        foreach ($tableInfo["primary"] as $table => $columns){
            foreach ($missingColumns["primary"] as $missing){
                if(!in_array($missing,$columns)){
                    if(!isset($missingTableColumns["primary"][$table])){
                        $missingTableColumns["primary"][$table] = array($missing);
                    }else{
                        $missingTableColumns["primary"][$table][] = $missing;
                    }
                }
            }
        }
        foreach ($tableInfo["secondary"] as $table => $columns){
            foreach ($missingColumns["secondary"] as $missing){
                if(!in_array($missing,$columns)){
                    if(!isset($missingTableColumns["secondary"][$table])){
                        $missingTableColumns["secondary"][$table] = array($missing);
                    }else{
                        $missingTableColumns["secondary"][$table][] = $missing;
                    }
                }
            }
        }
 
 
        $x = array(
            "stats" => array(
                "primary_column_count" => count($allColumns["primary"]),
                "primary_common_column_count" => count($commonColumns["primary"]),
                "secondary_column_count" => count($allColumns["secondary"]),
                "secondary_common_column_count" => count($commonColumns["secondary"]),
                "missing_columns" => $missingColumns,
                "missing_table_columns" => $missingTableColumns,
                "all_columns"=>$allColumns
            ),
            "info" => $tableInfo
        );
        echo "<pre>".print_r($x,1)."</pre>";
        die("done");

Comments