PHP 데이터베이스 비교 도구 공유
이 기사에서는 주로 PHP 데이터베이스 비교 도구를 공유합니다. 버전 반복을 위해서는 여러 버전의 데이터베이스를 비교하고 낮은 버전의 데이터베이스에 대한 업그레이드 스크립트를 작성해야 합니다. PHP를 사용하여 데이터베이스 비교 도구를 작성하세요. PHP를 사용하지 않고 하루가 걸렸습니다.
기능: 두 가지 다른 버전의 데이터베이스 src와 dst를 비교하고, SQL 파일을 생성하여 src를 dst로 업그레이드하세요
<?phpdefine("DSN",'mysql:host=127.0.0.1;port=3306;dbname=gmsys');//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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

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

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

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

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

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

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

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

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