thinkphp 프레임 워 크 데이터베이스 전환 실현 방법 분석
데이터베이스 설정:
// 1
'db_config1' => [
//
'type' => 'mysql',
//
'hostname' => '127.0.0.1',
//
'database' => 'thinkphp',
//
'username' => 'root',
//
'password' => '',
// utf8
'charset' => 'utf8',
//
'prefix' => 'think_',
],
// 2
'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
//
$test = Db::name("test")->select();
//
$test1=Db::connect("DB_Config_1")->name("test")->select();
application/config.php
$db1 = [
'type'=>'mysql',
'hostname'=>'127.0.0.1',
'database'=>'testA',
'username'=>'root',
'password'=>'123456',
'hostport'=>'3306',
'params'=>[],
'charset'=>'utf8',
'prefix'=>'', ],
$db2 = [
'type'=>'mysql',
'hostname'=>'127.0.0.1',
atabase'=>'testB',
'username'=>'root',
'password'=>'123456',
'hostport'=>'3306',
'params'=>[],
'charset'=>'utf8',
'prefix'=>'', ],
Db::connect('db1')->query('select * from user where age=25');
방법 설정저 희 는 Db 클래스 를 호출 할 때 연결 정 보 를 동적 으로 정의 할 수 있 습 니 다.예 를 들 어:
Db::connect([
//
'type' => 'mysql',
// DSN
'dsn' => '',
//
'hostname' => '127.0.0.1',
//
'database' => 'thinkphp',
//
'username' => 'root',
//
'password' => '',
//
'hostport' => '',
//
'params' => [],
// utf8
'charset' => 'utf8',
//
'prefix' => 'think_',
]);
문자열 사용 하기:
Db::connect('mysql://root:[email protected]:3306/thinkphp#utf8');
문자열 연결 의 정의 형식 은:데이터베이스 종류://사용자 이름:비밀번호@데이터베이스 주소:데이터베이스 포트/데이터베이스 이름\#문자 집합
메모:문자열 방식 은 접두사 와 연결 매개 변수 와 같은 일부 매개 변 수 를 정의 할 수 없습니다.
만약 에 저희 가 설정 파일 을 사용 하고 있다 면(데이터베이스 설정 파일 이 아 닙 니 다)추가 데이터베이스 연결 정 보 를 설정 하 였 습 니 다.예 를 들 어:
// 1
'db_config1' => [
//
'type' => 'mysql',
//
'hostname' => '127.0.0.1',
//
'database' => 'thinkphp',
//
'username' => 'root',
//
'password' => '',
// utf8
'charset' => 'utf8',
//
'prefix' => 'think_',
],
// 2
'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
우 리 는 고 칠 수 있다.
Db::connect('db_config1');
Db::connect('db_config2');
데이터베이스.php 는 프레임 워 크 의 기본 데이터베이스 설정 으로 데이터베이스 1 의 정 보 를 쓰 고 데이터베이스 2.php 를 새로 만 들 었 습 니 다.데이터베이스 2 를 설치 하 는 정보 입 니 다.
데이터베이스 2 를 만 든 후 config 프로필 에서 파일 은 마지막 으로 데이터베이스 2 의 설정 정 보 를 도입 합 니 다.
$db_con2 = require_once ('database2.php'),
'db_con2' => $db_con2,
코드 참조:데이터베이스 1 을 선택 할 때 저 는 모델 로 SQL 문 구 를 직접 작성 합 니 다.
//
$user = new User();
$result = $user->where('username', $data['username'])
->where('password', $data['password'])
->find();
혹은
User::where('id','1')->find();
//
Db::table('think_user')->where('id',1)->find();
데이터베이스 2 의 정 보 를 조회 할 때 일반 검색 어 를 호출 합 니 다.
$list = Db::connect('db_con2')
->table('nrf_amf_reg_info')
->alias('r')
->join('nrf_amf_server s','r.Id = s.nrf_amf_reg_Id','LEFT')
->paginate();
혹은
$list = Db::connect('db_con2')->name('nrf_disc_record')->paginate();
주:nrfamf_reg_info 와 nrfdisc_표 이름thinkpHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thinkphp의 S 캐시 사용법!텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.