"", "type" => "", "user" => "", "password" => '', "host" => "", "port"=>"" ); $data = []; $dbNames = ["table1","table2"]; /** @var PDO $pdo */ $pdo = new PDO( "mysql:host={$conn['host']}; dbname={$conn['name']}", $conn['user'], $conn['password'] ); foreach ($dbNames as $dbName){ $data["additional_tables"][$dbName] = []; $data["additional_columns"][$dbName] = []; $data["changes"][$dbName] = []; $data["schema"][$dbName] = []; $data[$dbName] = [ "tables" => [], "columns" => [] ]; $params = []; $schema = fetchQ($pdo,"SHOW TABLES in {$dbName}",$params); if(!empty($schema)){ foreach ($schema as $i => $x){ $table = trim($x["Tables_in_{$dbName}"]); $data[$dbName]["tables"][$table] = $table; $data[$dbName]["columns"][$table] = []; $schemaA = fetchQ($pdo,"DESCRIBE `{$dbName}`.`{$table}` ",$params); if(!empty($schemaA)){ $formattedSchema = array(); foreach ($schemaA as $colInfo){ $data[$dbName]["columns"][$table][$colInfo["Field"]] = $colInfo["Type"]; $formattedSchema[$colInfo["Field"]] = $colInfo; } $data["schema"][$dbName][$table] = $formattedSchema; } } } } // die("
".print_r($data,1));
    foreach ($data as $dbName => $info){
        if($dbName === $dbNames[0]){$check = $dbNames[1];}
        else{$check = $dbNames[0];}
        $tables = $data[$dbName]["tables"];
        if(!$tables){
            continue;
            die(":nothing #1125");
        }
        $dbChanges[$dbName] = [];
        foreach ($tables as $table){
            if(!isset($data[$check]["tables"][trim($table)])){
                $data["additional_tables"][$dbName][] = trim($table);
                $x = fetchQ($pdo,"show create table {$dbName}.{$table}",[]);
                if(!empty($x[0]["Create Table"])){
                    $data["changes"][$dbName][]  = $x[0]["Create Table"].";";
                }else{
                    die(":nothing #1124");
                }
            }
            if($data[$dbName]["columns"][$table]){
                foreach ($data[$dbName]["columns"][$table] as $col => $type){
                    if(isset($data[$check]["columns"][$table])){
                        if(!isset($data[$check]["columns"][$table][$col])){
                            $data["additional_columns"][$dbName][$table][] = $col;
                            $data["changes"][$dbName][] = getAlterTableStatement($table,$col,$data["schema"][$dbName][$table][$col]);
                        }
                    }
                }
            }
        }
    }
    $changes = $data["changes"]["table1"];
    if(!empty($changes)){
        $changes = implode(PHP_EOL.PHP_EOL,$changes);
        echo str_replace(PHP_EOL,PHP_EOL."
","SET FOREIGN_KEY_CHECKS=0;".PHP_EOL.PHP_EOL.$changes.PHP_EOL.PHP_EOL."SET FOREIGN_KEY_CHECKS=1;"); die(""); } die(":nothing #1123"); } /** * * Name getAlterTableStatement * * @param $table * @param $column * @param $info * * @return string * * @author RapidMod.io * @author 813.330.0522 * @created 1/25/20 */ function getAlterTableStatement($table,$column,$info){ $alter = ""; $stmnt = "ALTER TABLE `{$table}` ADD COLUMN `{$column}` {$info["Type"]}"; if($info["Key"]){ switch (strtolower($info["Key"])){ case "pri" : return $stmnt. " PRIMARY KEY AUTO_INCREMENT ;"; break; case "mul" : $alter = PHP_EOL."ALTER TABLE `$table` ADD INDEX {$column} ({$column}); "; break; case "uni" : $alter = PHP_EOL."ALTER TABLE `$table` ADD UNIQUE INDEX {$column} ({$column}); ";break; default : break; } } if($info["Null"] === "YES"){ $stmnt .= " NULL"; }else{ $stmnt .= " NOT NULL"; } if($info["Default"]){ if(in_array(strtolower($info["Type"]),["datetime","timestamp"]) && $info["Default"] !== "CURRENT_TIMESTAMP"){ $var = "0000-00-00 00:00:00"; }else if(is_numeric($info["Default"]) || $info["Default"] === "CURRENT_TIMESTAMP"){ $var = $info["Default"]; }else{ $var = "'{$info["Default"]}'"; } $stmnt .= " DEFAULT {$var}"; } return "{$stmnt};{$alter}"; } /** * * Name fetchQ * * @param PDO $pdo * @param string $query * @param array $params * * @return array * * @author RapidMod.io * @author 813.330.0522 * @created 1/24/20 */ function fetchQ(PDO $pdo, string $query,array $params = []){ $stmnt = $pdo->prepare($query,[PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true]); $x = array(); if(isset($params[0]) && is_array($params[0])){$params = $params[0];} if(empty($params)){$params=null;} $success = $stmnt->execute($params); //\Rapidmod\Dev::printVar($stmnt); if($success){ while($row = $stmnt->fetch(PDO::FETCH_ASSOC)){ $x[] = $row; } } return $x; } executeQ([]); ?>