웹 프론트엔드 JS 튜토리얼 PHP 데이터베이스 비교 도구 공유

PHP 데이터베이스 비교 도구 공유

Mar 28, 2018 pm 03:27 PM
php 공유하다 데이터 베이스

이 기사에서는 주로 PHP 데이터베이스 비교 도구를 공유합니다. 버전 반복을 위해서는 여러 버전의 데이터베이스를 비교하고 낮은 버전의 데이터베이스에 대한 업그레이드 스크립트를 작성해야 합니다. PHP를 사용하여 데이터베이스 비교 도구를 작성하세요. PHP를 사용하지 않고 하루가 걸렸습니다.

기능: 두 가지 다른 버전의 데이터베이스 src와 dst를 비교하고, SQL 파일을 생성하여 src를 dst로 업그레이드하세요

<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

session_start () 함수의 중요성은 무엇입니까? session_start () 함수의 중요성은 무엇입니까? May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanagingUsersessions.1) itiniteSanewsessionifnoneexists, 2) ResumesAnxistessions, and3) setSasessionCookieForContInuityAcrosrequests, enablingplicationsirecationSerauthenticationAndpersonalizestContent.

데이터 처리 및 계산에 MySQL 기능을 사용하는 방법 데이터 처리 및 계산에 MySQL 기능을 사용하는 방법 Apr 29, 2025 pm 04:21 PM

MySQL 기능은 데이터 처리 및 계산에 사용될 수 있습니다. 1. 기본 사용에는 문자열 처리, 날짜 계산 및 수학 연산이 포함됩니다. 2. 고급 사용에는 복잡한 작업을 구현하기 위해 여러 기능을 결합하는 것이 포함됩니다. 3. 성능 최적화를 위해서는 WHERE 절에서 기능 사용 및 GroupBy 및 임시 테이블 사용을 피해야합니다.

작곡가 : PHP 개발자의 패키지 관리자 작곡가 : PHP 개발자의 패키지 관리자 May 02, 2025 am 12:23 AM

Composer는 PHP의 종속성 관리 도구이며 Composer.json 파일을 통해 프로젝트 종속성을 관리합니다. 1) 종속성 정보를 얻기 위해 Composer.json을 구문 분석합니다. 2) 종속성 트리를 형성하기위한 종속성; 3) Packagist에서 공급 업체 디렉토리로 종속성을 다운로드하여 설치합니다. 4) Composer.Lock 파일을 생성하여 팀 일관성 및 프로젝트 유지 관리 가능성을 보장하기 위해 종속성 버전을 잠그십시오.

MySQL의 문자 세트 및 Collation 규칙을 구성하는 방법 MySQL의 문자 세트 및 Collation 규칙을 구성하는 방법 Apr 29, 2025 pm 04:06 PM

MySQL에서 문자 세트 및 콜라주를 구성하는 방법은 다음과 같습니다. 1. 서버 수준에서 문자 세트 및 콜라주 설정 : setNames'Utf8 '; setcharactersetutf8; setCollation_connection = 'utf8_general_ci'; 2. 특정 문자 세트 및 콜라주를 사용하는 데이터베이스를 만듭니다. createAbaseexample_DBCHARACTERSETUTF8COLLATEUTF8_GENERAL_CI; 3. 테이블을 만들 때 문자 세트 및 콜라주를 지정하십시오 : CreateTableAmplipt_table (idint

MySQL에서 데이터베이스 이름을 바꾸는 방법 MySQL에서 데이터베이스 이름을 바꾸는 방법 Apr 29, 2025 pm 04:00 PM

MySQL에서 데이터베이스를 바꾸려면 간접적 인 방법이 필요합니다. 단계는 다음과 같습니다. 1. 새 데이터베이스를 만듭니다. 2. mysqldump를 사용하여 이전 데이터베이스를 내보내십시오. 3. 데이터를 새 데이터베이스로 가져옵니다. 4. 이전 데이터베이스를 삭제합니다.

작곡가의 목적 : PHP의 프로젝트 종속성 관리 작곡가의 목적 : PHP의 프로젝트 종속성 관리 Apr 30, 2025 am 12:01 AM

작곡가는 PHP 프로젝트의 종속성을 효과적으로 관리하고 버전 충돌 및 수동 라이브러리 관리의 번거 로움을 피할 수 있으므로 작곡가가 필요합니다. Composer는 Composer.json을 통해 종속성을 선언하고 Composer.Lock을 사용하여 버전 일관성을 보장하고 종속성 관리 프로세스를 단순화하며 프로젝트 안정성 및 개발 효율성을 향상시킵니다.

MongoDB : 문서 데이터베이스가 설명했습니다 MongoDB : 문서 데이터베이스가 설명했습니다 Apr 30, 2025 am 12:04 AM

MongoDB는 많은 양의 구조화되지 않은 데이터를 처리하는 데 적합한 NOSQL 데이터베이스입니다. 1) 문서와 컬렉션을 사용하여 데이터를 저장합니다. 문서는 JSON 객체와 유사하며 컬렉션은 SQL 테이블과 유사합니다. 2) MongoDB는 B-Tree Indexing 및 Sharding을 통해 효율적인 데이터 운영을 실현합니다. 3) 기본 작업에는 문서 연결, 삽입 및 쿼리가 포함됩니다. 집계 파이프 라인과 같은 고급 작업은 복잡한 데이터 처리를 수행 할 수 있습니다. 4) 일반적인 오류에는 객체의 부적절한 취급과 색인 사용이 부적절합니다. 5) 성능 최적화에는 인덱스 최적화, 샤드, 읽기 쓰기 분리 및 데이터 모델링이 포함됩니다.

HTML 요소의 회전 효과를 설정하는 방법 HTML 요소의 회전 효과를 설정하는 방법 Apr 30, 2025 pm 02:42 PM

HTML에서 요소의 회전 효과를 설정하는 방법은 무엇입니까? CSS 및 JavaScript를 사용하여 달성 할 수 있습니다. 1. CSS의 변환 속성은 회전 (45deg)과 같은 정적 회전에 사용됩니다. 2. JavaScript는 변환 속성을 변경하여 구현되는 회전을 동적으로 제어 할 수 있습니다.

See all articles