Heim > PHP-Framework > Denken Sie an PHP > Kann thinkphp eine neue Datenbank separat konfigurieren?

Kann thinkphp eine neue Datenbank separat konfigurieren?

藏色散人
Freigeben: 2022-12-13 09:24:40
Original
1710 Leute haben es durchsucht

thinkphp kann eine neue Datenbank separat konfigurieren: 1. Fügen Sie Konfigurationsparameter wie „‘DB_HOST‘ => ‚localhost‘ …“ in der Anwendungskonfigurationsdatei oder Modulkonfigurationsdatei hinzu Unabhängige Datenbankkonfigurationsinformationen werden in der Statuskonfigurationsdatei definiert. 3. Geben Sie beim Instanziieren die Datenbankverbindungsinformationen mit einer Syntax wie „$User = M(‘User‘,‘other_‘,‘mysql://root…“ an. .

Kann thinkphp eine neue Datenbank separat konfigurieren?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ThinkPHP-Version 5, Dell G3-Computer

Kann thinkphp eine neue Datenbank unabhängig konfigurieren?

Ja Um die Modelldatenbankverbindung unabhängig zu konfigurieren, verfügt ThinkPHP über eine integrierte abstrakte Datenbankzugriffsschicht, die verschiedene Datenbankoperationen kapselt Für verschiedene Datenbanken ruft die Db-Klasse automatisch den entsprechenden Datenbanktreiber zur Verarbeitung auf, darunter Mysql, SqlServer, PgSQL, Sqlite, Oracle, Ibase und Mongo, und unterstützt auch PDO Bei einer Datenbank müssen die Datenbankverbindungsinformationen konfiguriert werden.

1. Globale Konfigurationsdefinition

Die übliche Konfigurationsmethode besteht darin, die folgenden Konfigurationsparameter in die Anwendungskonfigurationsdatei oder Modulkonfigurationsdatei einzufügen:

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

Der Typ der Datenbank wird durch den Parameter DB_TYPE festgelegt. Im Folgenden sind die derzeit unterstützten Datenbankeinstellungen aufgeführt:

Wenn DB_TYPE den PDO-Typ verwendet, wird der Datenbanktyp durch die DB_DSN-Konfiguration bestimmt

Oder verwenden Sie die Folgende Konfiguration

'DB_DSN' => 'mysql://root:123456@localhost:3306/thinkphp#utf8'
Nach dem Login kopieren

Die Verwendung der DB_DSN-Modusdefinition kann die Konfigurationsparameter vereinfachen:

Datenbanktyp://Benutzername:Passwort@Datenbankadresse:Datenbankport/Datenbankname#Zeichensatzeinstellung erforderlich Version 3.2.1 oder höher ist gültig. Wenn der Zeichensatz nicht festgelegt ist, ist der Standardwert utf8. Wenn beide Konfigurationsparameter gleichzeitig vorhanden sind, hat der DB_DSN-Konfigurationsparameter Vorrang Bei einer verteilten Datenbank wird die DB_DSN-Konfiguration derzeit nicht unterstützt.

Kann thinkphp eine neue Datenbank separat konfigurieren?Wenn Sie den PDO-Treiber verwenden, müssen Sie zuerst **DB_TYPE** konfigurieren und dann andere Parameter separat konfigurieren, wie zum Beispiel:

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

Hinweis: Das DB_DSN-Konfigurationsformat des PDO-Modus ist unterschiedlich und die Einstellungen sind je nach Datenbanktyp unterschiedlich. Weitere Informationen finden Sie im PHP-Handbuch.

Die durch die Konfigurationsdatei definierten Datenbankinformationen werden im Allgemeinen verwendet Das System ist standardmäßig aktiviert, da die Datenbankzugriffskonfiguration einer Anwendung im Allgemeinen dieselbe ist. Bei dieser Methode ruft das System sie automatisch ab, wenn eine Verbindung zur Datenbank hergestellt wird, und es ist keine manuelle Verbindung erforderlich.

Sie können für jedes Modul unterschiedliche Datenbankverbindungsinformationen definieren. Wenn der Debugging-Modus aktiviert ist, können Sie auch unabhängige Datenbankkonfigurationsinformationen in den Konfigurationsdateien verschiedener Anwendungszustände definieren.

2. Modellklassendefinition

Wenn das Verbindungsattribut in einer Modellklasse definiert ist, werden beim Instanziieren des benutzerdefinierten Modells die definierten Datenbankverbindungsinformationen anstelle der in der Konfigurationsdatei festgelegten Standardverbindungsinformationen verwendet wobei sich einige Datentabellen außerhalb der aktuellen Datenbankverbindung befinden, wie zum Beispiel:

//在模型里单独设置数据库连接信息
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',
);
}
Nach dem Login kopieren

Es ​​kann auch im DSN-Modus definiert werden, wie zum Beispiel:

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

Wenn wir beispielsweise zusätzliche Datenbankverbindungsinformationen in der Konfigurationsdatei konfiguriert haben :

//数据库配置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';
Nach dem Login kopieren

Dann können wir die Attributdefinition der Modellklasse ändern in:

//在模型里单独设置数据库连接信息
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';
}
Nach dem Login kopieren

3. Instanziierungsdefinition

Zusätzlich zur Angabe der Datenbankverbindungsinformationen beim Definieren des Modells können wir diese auch bei der Instanziierung der Datenbankverbindungsinformationen angeben , Beispiel: Wenn die M-Methode zum Instanziieren des Modells verwendet wird, können auch andere Datenbankverbindungsinformationen übergeben werden. Beispiel:

$User = M('User','other_','mysql://root:1234@localhost/demo#utf8');
Nach dem Login kopieren

bedeutet Instanziieren des Benutzermodells und die Verbindung besteht zur Tabelle other_user der Demodatenbank. using Die Verbindungsinformationen werden durch den dritten Parameter konfiguriert. Wenn wir DB_CONFIG2 in der Projektkonfigurationsdatei konfiguriert haben, können wir auch Folgendes verwenden:

$User = M('User','other_','DB_CONFIG2');
Nach dem Login kopieren

Es ​​ist zu beachten, dass die Datenbankverbindung von ThinkPHP verzögert ist, sodass keine Verbindung zur Datenbank hergestellt wird, wenn sie instanziiert wird, sondern wenn eine tatsächliche Datenbank vorhanden ist Es wird nur eine Verbindung hergestellt, wenn die Daten bearbeitet werden (außerdem stellt das System beim ersten Instanziieren des Modells automatisch eine Verbindung zur Datenbank her, um die Feldinformationen der Datentabelle abzurufen, die der relevanten Modellklasse entsprechen).

Empfohlenes Lernen: „

thinkPHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonKann thinkphp eine neue Datenbank separat konfigurieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage