Heim > Artikel > PHP-Framework > Kann thinkphp eine neue Datenbank separat konfigurieren?
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. .
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', // 字符集
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'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.
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'
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', ); }
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'; }
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';
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'; }
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');
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');
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!