In der folgenden Tutorial-Kolumne von thinkphp erfahren Sie, wie Sie die Datenbank im ThinkPHP-Datenbankbetrieb verbinden. Ich hoffe, dass es für Freunde hilfreich ist, die es benötigen!
ThinkPHP verfügt über eine integrierte abstrakte Datenbankzugriffsschicht, die verschiedene Datenbankoperationen kapselt. Wir müssen nur die öffentliche Db-Klasse verwenden, um verschiedene Codes und zugrunde liegende Implementierungen für verschiedene Datenbanken zu schreiben Fahrer zu handhaben. Mithilfe der PDO-Methode bietet es derzeit Unterstützung für MySQL, SqlServer, PgSQL, Sqlite und andere Datenbanken.
Wenn die Anwendung eine Datenbank verwenden muss, müssen die Datenbankverbindungsinformationen konfiguriert werden. Es gibt viele Möglichkeiten, die Datenbankkonfigurationsdatei zu definieren.
1. Konfigurationsdateidefinition Modul Fügen Sie die folgenden Konfigurationsparameter zur Datenbank.php im Verzeichnis hinzu:
return [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'thinkphp', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库连接端口 'hostport' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => 'think_', // 数据库调试模式 'debug' => false, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => true,];
type-Parameter unterstützt die vollständige Namespace-Definition. Wenn keine Namespace-Definition vorhanden ist, wird standardmäßig thinkdbconnector als Namespace verwendet kann es wie folgt konfigurieren:
// 数据库类型 'type' => '\org\db\Mysql',
Zeigt an, dass der Datenbankkonnektor die Klasse orgdbMysql als Datenbankverbindungstreiber anstelle des Standard-ThinkdbconnectorMysql verwendet.
Jedes Modul kann unabhängige Datenbankverbindungsparameter festlegen, und dieselben Konfigurationsparameter müssen nicht wiederholt festgelegt werden. Beispielsweise können wir in der Konfigurationsdatei „database.php“ des Admin-Moduls Folgendes definieren:
return [ // 服务器地址 'hostname' => '192.168.1.100', // 数据库名 'database' => 'admin',];
bedeutet, dass die Datenbank Die Adresse des Admin-Moduls wird in 192.168.1.100 geändert, der Datenbankname wird in admin geändert und andere Verbindungsparameter entsprechen der Konfiguration in der Datenbank.php der Anwendung.
V5.0.6+ Version startet, unterstützt den Trenn- und Wiederverbindungsmechanismus von MySQL, der standardmäßig deaktiviert ist. Fügen Sie ihn bei Bedarf zur Datenbankkonfigurationsdatei hinzu:
// 开启断线重连 'break_reconnect' => true,
Verbindungsparameterkönnen hinzugefügt werden unterschiedliche Verbindungsanforderungen Datenbankverbindungsparameter (spezifische Verbindungsparameter finden Sie im PHP-Handbuch):
PDO::ATTR_CASE => PDO::CASE_NATURAL,PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,PDO::ATTR_STRINGIFY_FETCHES => false,PDO::ATTR_EMULATE_PREPARES => false,
Die Verbindungskonfiguration in den in der Datenbank festgelegten Parametern wird mit den integrierten Parametern zusammengeführt. beim Festlegen von Parametern. Wenn Sie eine lange Verbindung verwenden müssen, wird der kleingeschriebene Spaltenname der Datenbank zurückgegeben, der auf folgende Weise definiert werden kann:
'params' => [ \PDO::ATTR_PERSISTENT => true, \PDO::ATTR_CASE => \PDO::CASE_LOWER,],
Datenbanktyp://Benutzername:Passwort@Datenbankadresse:Datenbankport/Datenbankname#Zeichensatz
Hinweis: Im Zeichenfolgenmodus können möglicherweise einige Parameter wie Präfix und Verbindungsparameter nicht definiert werden.
Wenn wir zusätzliche Datenbankverbindungsinformationen in der
Anwendungskonfigurationsdatei konfiguriert haben (beachten Sie, dass es sich hierbei nicht um eine Datenbankkonfigurationsdatei handelt), zum Beispiel:
Db::connect([ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'thinkphp', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库连接端口 'hostport' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => 'think_',]);
Wir können es in Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
Wenn das Verbindungsattribut in einer Modellklasse definiert ist, stellt das Modell beim Betrieb automatisch eine Verbindung mit der angegebenen Datenbankverbindung her, anstatt mit den in der Konfigurationsdatei festgelegten Standardverbindungsinformationen, die normalerweise verwendet werden einige Die Datentabelle befindet sich in anderen Datenbanken außerhalb der aktuellen Datenbankverbindung, zum Beispiel:
//数据库配置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';
Sie kann auch mithilfe von DSN-Zeichenfolgen definiert werden, zum Beispiel: Db::connect('db_config1');
Db::connect('db_config2');
Referenz der Konfigurationsparameter
Das Folgende sind die standardmäßig unterstützten Datenbankverbindungsinformationen:Parametername | Beschreibung | Standardwert |
Typ | Datenbanktyp | Keine |
Hostname | Datenbankadresse | 127.0.0.1 |
Datenbank | Datenbankname | Keine |
Benutzername | Datenbankbenutzername | Keine |
Passwort | Datenbankpasswort | Keine |
Hostport | Datenbank-Portnummer | Keine |
dsn | Datenbank-Verbindungs-DSN-Informationen | Tabellenpräfix der Datenbank |
debug | Ob Debugmodus | |
deploy | Datenbankbereitstellungsmodus: 0 zentralisiert (einzelner Server), 1 verteilt (Master-Slave-Server) | |
rw_separate | Datenbank lesen Ob die Schreibtrennung Master-Slave-Modus ist gültig | |
master_num | Die Anzahl der Master-Server nach der Trennung von Lesen und Schreiben | |
slave_no | Geben Sie die Seriennummer des Slave-Servers an | |
fields _strict | Ist es strikt? Überprüfen Sie, ob das Feld vorhanden ist. | |
resultset_type | false | |
sql _explain | Ob eine SQL-Leistungsanalyse erforderlich ist. Das Einschalten des Debuggens ist gültig. | false |
query | Abfrageobjekt angeben | thinkdbQuery |
builder | Datenbank-Builder angeben. object | Keine |
Achtung: | ||
Das obige ist der detaillierte Inhalt vonThinkPHP-Datenbankvorgang zum Herstellen einer Verbindung zur Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!