検索

PHPデータベース比較ツールの共有

Mar 28, 2018 pm 03:27 PM
php共有データベース

この記事では主に、PHP データベース比較ツールについて説明します。バージョンの反復では、異なるバージョンのデータベースを比較し、下位バージョンのデータベース用のアップグレード スクリプトを作成する必要があります。 PHP を使用してデータベース比較ツールを作成します。 phpを使わずに1日かかりました。

機能: 2つの異なるバージョンのデータベースsrcとdstを比較し、srcをdstにアップグレードするためのSQLファイルを生成します

<?phpdefine("DSN",&#39;mysql:host=127.0.0.1;port=3306;dbname=gmsys&#39;);//gm数据库配置define("SRC_DB","ea_role");
define("TARGET_DB","game_role");
define("USER","LiMing");
define("PASS","");
define("FILE_NAME","updateSQL.sql");//获取数据库结构//数据库名称,链接,返回所有表,所有表的结构<tableName,<tableName,fields>>,表的属性值function getDBStructure($db_name,$pdo,&$tables,&$db_stru,&$table_status){
    # code...
    //获取SRC_DB 的数据库结构
    $pdo->query("use ".$db_name);
    print_r("<pre class="brush:php;toolbar:false">");    //表属性
    foreach ($pdo->query("show table status") as $key => $value) {        # code...
        $table_status[$value[0]] = $value;

    }    //echo PHP_EOL;

    foreach ($pdo->query("show tables") as $key => $value) {        # code...
        $tables[$key] = $value[0];//表名
        //echo $value[0]."|";
    }    //echo PHP_EOL;
    foreach ($tables as $key => $name) {        # code...
        //echo $name .PHP_EOL;
        $table = null;//记得初始化
        foreach ($pdo->query("desc ".$name) as $key => $value) {            # code...
            $table[$value[0]] = $value; //字段名 ——> 字段属性
            //echo $value[0] ."|";
        }        //echo PHP_EOL;
        $db_stru[$name] = $table; //表名 -> 表结构
    }

}//生成创建数据库的sql// 表名  表结构function createTableSQl($name,$table){
    # code...
    $pri_key =  array();    $mul_key =  array();    $sql = "CREATE TABLE `{$name}` (";    foreach ($table as $key => $value) {        # code...
        $field = $value[0];//字段名
        $type = $value[1]; //字段类型
        $null = $value[2]; //是否为空 YES NO
        $key = $value[3]; //PRI MUL
        $default = $value[4]; //字段类型 
        $extal = $value[5];//
        $isNUll = "";        if ($null == "YES") {            # code...
            $isNUll = "not null";
        }        //$defaultMsg = $default;
        if (!is_null($default)) {            # code...
            $default = " default {$default}";
        }        if ($key == "PRI") {            # code...
            array_push($pri_key, $field);
        }        else if ($key == "MUL") {            # code...
            array_push ($mul_key, $field);
        }        //拼接字符串
        $row = "`{$field}` {$type} {$isNUll} {$default},";        $sql = $sql . PHP_EOL . $row  ;
    }    //添加主键
    if (!empty($pri_key)) {    # code...

        $sql = $sql . PHP_EOL."PRIMARY KEY (";        foreach ($pri_key as $v) {            # code...
            $sql = $sql."`{$v}`,";
        }        $sql = substr($sql, 0,strlen($sql)-1);        $sql = $sql . ")," ;
    }        //拼接主键
    if (!empty($mul_key)) {        # code...

        foreach ($mul_key as  $v) {            # code...
            $sql = $sql . PHP_EOL . "key `{$v}` ({$v}),";
        }
    }    $sql = substr($sql, 0,strlen($sql)-1);//去掉最后一个‘,’

    $sql = $sql . PHP_EOL . ");".PHP_EOL;    return $sql;
}//生成update文件// $fields <tabName,field>//ALTER TABLE `familyer`  ADD COLUMN   `joinfightdata` blob AFTER `ssfightblob`;function genUpdateSQL($fields){
    $updateSql=null ;    foreach ($fields as $tab_name => $value) {        # code...
        foreach ($value as $key => $v) {            # code...
            $isNUll = "";            if ($v[2] == "YES") {                # code...
                $isNUll = "NOT NULL";
            }            $default = $v[4];            if (!is_null($default)) {                # code...
                $default = " default {$default}";
            }            $updateSql = $updateSql . "ALTER TABLE `{$tab_name}` ADD COLUMN `{$v[0]}` {$v[1]} {$isNUll} {$default};".PHP_EOL;
        }        $updateSql = $updateSql.PHP_EOL;
    }    return $updateSql;
}//比价数据库结构//dst_db 有 src_db 没有 返回表字段数组function cmp($src_db,$dst_db){
    $tables =array();//dst有 但是src中没有的表 <tale>
    $fields = array();//表名 -> <字段名,字段属性>
    foreach ($dst_db as $key => $value) {        # code...
        if ( array_key_exists($key,$src_db) ) {//如果存在比较字段
            # code...
            $tmp = array_diff_key($value,$src_db[$key]);            if ( !empty($tmp) )  {                # code...
                $fields[$key]=$tmp;
            }
        }        else
            array_push($tables,$key);
    }    return $fields;
}$pdo = new PDO(DSN, USER, PASS);//创建数据库链接//源数据库结构$src_tables= NULL;//表名数组$src_db = NULL;    //数据库结构 表名->表字段$src_table_status = NULL; //表属性 name -> 属性getDBStructure(SRC_DB,$pdo,$src_tables,$src_db,$src_table_status);//目的数据库结构$dst_tables =NULL;$dst_db=null;$dst_table_status=null;
getDBStructure(TARGET_DB,$pdo,$dst_tables,$dst_db,$dst_table_status);$cmp_table = array_diff($dst_tables,$src_tables);$cmp_fields = cmp($src_db,$dst_db);//print_r($cmp_table);$text = null;foreach ($cmp_table as  $value) {    # code...
    if ( !strchr($value,"pvprankreward") ) {        # code...
        $text = $text.createTableSQl($value,$dst_db[$value]);
    }

}$text = $text . genUpdateSQL($cmp_fields);$myfile = fopen(FILE_NAME,"w");
fwrite($myfile, $text);
fclose($myfile);//对比数据库结构 返回差异 表//cmp($dst_db,$src_db);//对比表结构返回有差异的表//$str = createTableSQl($src_tables[0],$src_db[$src_tables[0]]);//$myfile = fopen("SQL.sql","w");//fwrite($myfile, $str);//fclose($myfile);// print_r("<pre class="brush:php;toolbar:false">");//print_r($src_db["pvprankreward170525"]);//print_r($src_table_status["role"]);?>

関連する推奨事項:

phpデータベース操作記録

PHPデータベースでよく使用される関数の詳細な説明

phpデータベースの永続接続

以上がPHPデータベース比較ツールの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptフレームワーク:最新のWeb開発のパワーJavaScriptフレームワーク:最新のWeb開発のパワーMay 02, 2025 am 12:04 AM

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

JavaScript、C、およびブラウザの関係JavaScript、C、およびブラウザの関係May 01, 2025 am 12:06 AM

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、型を使用してストリーミングしますnode.jsは、型を使用してストリーミングしますApr 30, 2025 am 08:22 AM

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

Python vs. JavaScript:パフォーマンスと効率の考慮事項Python vs. JavaScript:パフォーマンスと効率の考慮事項Apr 30, 2025 am 12:08 AM

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptの起源:その実装言語の調査JavaScriptの起源:その実装言語の調査Apr 29, 2025 am 12:51 AM

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

舞台裏:JavaScriptをパワーする言語は何ですか?舞台裏:JavaScriptをパワーする言語は何ですか?Apr 28, 2025 am 12:01 AM

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの未来:傾向と予測PythonとJavaScriptの未来:傾向と予測Apr 27, 2025 am 12:21 AM

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン