> PHP 프레임워크 > ThinkPHP > thinkphp에서 새 데이터베이스를 별도로 구성할 수 있나요?

thinkphp에서 새 데이터베이스를 별도로 구성할 수 있나요?

藏色散人
풀어 주다: 2022-12-13 09:24:40
원래의
1687명이 탐색했습니다.

thinkphp는 새 데이터베이스를 별도로 구성할 수 있습니다. 1. 애플리케이션 구성 파일 또는 모듈 구성 파일에 "'DB_HOST' => 'localhost'..."와 같은 구성 매개변수를 추가합니다. 독립적인 데이터베이스 구성 정보는 상태 구성 파일에 정의됩니다. 3. 인스턴스화 시 "$User = M('User','other_','mysql://root..."와 같은 구문을 사용하여 데이터베이스 연결 정보를 지정합니다.

thinkphp에서 새 데이터베이스를 별도로 구성할 수 있나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, ThinkPHP 버전 5, Dell G3 컴퓨터

thinkphp가 새 데이터베이스를 독립적으로 구성할 수 있습니까?

예.

Thinkphp 모델 - 데이터베이스 연결

Connect to Database

ThinkPHP에는 다양한 데이터베이스 작업을 캡슐화하는 추상 데이터베이스 액세스 계층이 내장되어 있어 다른 코드와 기본 구현을 작성하지 않고도 작동하려면 공용 Db 클래스만 사용하면 됩니다. 다른 데이터베이스의 경우 Db 클래스는 처리를 위해 해당 데이터베이스 드라이버를 자동으로 호출합니다. 현재 데이터베이스에는 Mysql, SqlServer, PgSQL, Sqlite, Oracle, Ibase 및 Mongo가 포함되며

애플리케이션에서 사용해야 하는 경우도 있습니다. 데이터베이스 연결 정보를 구성해야 합니다.

1. 전역 구성 정의

일반적인 구성 방법은 애플리케이션 구성 파일 또는 모듈 구성 파일에 다음 구성 매개변수를 추가하는 것입니다.

//数据库配置信息'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'thinkphp', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '123456', // 密码
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => 'think_', // 数据库表前缀
'DB_CHARSET'=> 'utf8', // 字符集
로그인 후 복사

데이터베이스 유형은 DB_TYPE 매개변수에 의해 설정됩니다. 현재 지원되는 데이터베이스 설정은 다음과 같습니다.

thinkphp에서 새 데이터베이스를 별도로 구성할 수 있나요?DB_TYPE이 PDO 유형을 사용하는 경우 데이터베이스 유형은 DB_DSN 구성에 의해 결정됩니다.

또는 다음 구성

'DB_DSN' => 'mysql://root:123456@localhost:3306/thinkphp#utf8'
로그인 후 복사

DB_DSN 모드 정의를 사용하면 구성 매개변수를 단순화할 수 있습니다. DSN 매개변수 형식은 다음과 같습니다. 버전 3.2.1 이상이 유효합니다. 문자 세트가 설정되지 않은 경우 기본값은 utf8입니다. 두 구성 매개변수가 동시에 존재하는 경우 DB_DSN 구성 매개변수가 우선합니다.

참고: 설정하려는 경우

PDO 드라이버를 사용하는 경우 먼저 **DB_TYPE**.pdo를 구성한 후 다음과 같은 기타 매개변수를 별도로 구성해야 합니다.

참고: PDO 모드의 DB_DSN 구성 형식이 다르며, 데이터베이스 유형에 따라 설정이 다릅니다. 자세한 내용은 PHP 매뉴얼을 참조하세요.

구성 파일에 정의된 데이터베이스는 일반적으로 사용됩니다. 일반적으로 애플리케이션의 데이터베이스 액세스 구성이 동일하기 때문에 이 방법에서는 시스템이 데이터베이스에 연결할 때 자동으로 이를 획득하므로 수동으로 연결할 필요가 없습니다.

모듈마다 서로 다른 데이터베이스 연결 정보를 정의할 수 있습니다. 디버깅 모드가 켜져 있으면 다양한 애플리케이션 상태의 구성 파일에서 독립적인 데이터베이스 구성 정보를 정의할 수도 있습니다.

2. 모델 클래스 정의

모델 클래스에 연결 속성이 정의되어 있으면 일반적으로 다른 데이터베이스에 사용되는 구성 파일에 설정된 기본 연결 정보 대신 정의된 데이터베이스 연결 정보가 사용자 정의 모델을 인스턴스화하는 데 사용됩니다.

//PDO连接方式
'DB_TYPE' => 'pdo', // 数据库类型
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PREFIX' => 'think_', // 数据库表前缀
'DB_DSN' => 'mysql:host=localhost;dbname=thinkphp;charset=UTF-8'
로그인 후 복사

와 같이 일부 데이터 테이블이 현재 데이터베이스 연결 외부에 있는 경우:

//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
protected $connection = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset' => 'utf8',
);
}
로그인 후 복사

예를 들어 구성 파일에 추가 데이터베이스 연결 정보를 구성한 경우 :

//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
//或者使用DSN定义
protected $connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';
}
로그인 후 복사

그런 다음 모델 클래스의 속성 정의를 다음으로 변경할 수 있습니다.

//数据库配置1
'DB_CONFIG1' => array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset'=> 'utf8',
),
//数据库配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
로그인 후 복사

3. 인스턴스화 정의

모델을 정의할 때 데이터베이스 연결 정보를 지정하는 것 외에도 데이터베이스 연결 정보를 인스턴스화할 때 지정할 수도 있습니다. 예를 들어 M 메서드를 사용하여 모델을 인스턴스화하는 경우 다른 데이터베이스 연결 정보도 전달할 수 있습니다. 예를 들어

//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
//调用配置文件中的数据库配置1
protected $connection = 'DB_CONFIG1';
}
//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class InfoModel extends Model{
//调用配置文件中的数据库配置1
protected $connection = 'DB_CONFIG2';
}
로그인 후 복사

는 User 모델을 인스턴스화하는 것을 의미하고 연결은 데모 데이터베이스의 other_user 테이블에 대한 것입니다. using 연결 정보는 세 번째 매개변수로 구성됩니다. 프로젝트 구성 파일에서 DB_CONFIG2를 구성한 경우 다음을 사용할 수도 있습니다.

$User = M('User','other_','mysql://root:1234@localhost/demo#utf8');
로그인 후 복사
ThinkPHP의 데이터베이스 연결은 게으르기 때문에 인스턴스화될 때 데이터베이스에 연결되지 않지만 실제 데이터베이스가 있을 때는 연결되지 않습니다. 데이터를 조작할 때만 연결됩니다(또한 시스템이 처음으로 모델을 인스턴스화할 때 자동으로 데이터베이스에 연결하여 해당 모델 클래스에 해당하는 데이터 테이블의 필드 정보를 얻습니다).

추천 학습: "

thinkPHP 비디오 튜토리얼

"

위 내용은 thinkphp에서 새 데이터베이스를 별도로 구성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿