ThinkPHP-Datenbankvorgang zum Herstellen einer Verbindung zur Datenbank

藏色散人
Freigeben: 2021-01-25 09:01:17
nach vorne
4039 Leute haben es durchsucht

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
  • 3. Modellklassendefinition
  • Konfigurationsparameterreferenz

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,];
Nach dem Login kopieren

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',
Nach dem Login kopieren

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',];
Nach dem Login kopieren

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,
Nach dem Login kopieren

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,
Nach dem Login kopieren

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,],
Nach dem Login kopieren

Sie können alle von PDO unterstützten Verbindungsparameter in params konfigurieren. ??

 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_',]);
Nach dem Login kopieren

Wir können es in

Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
Nach dem Login kopieren

ändern 3. Modellklassendefinition


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';
Nach dem Login kopieren

Sie kann auch mithilfe von DSN-Zeichenfolgen definiert werden, zum Beispiel:

Db::connect('db_config1');
Db::connect('db_config2');
Nach dem Login kopieren
Es ist zu beachten, dass die Datenbankverbindung von ThinkPHP verzögert ist Dies ist nicht der Fall. Die Datenbank ist bei der Instanziierung verbunden, wird jedoch mit der Datenbank verbunden, wenn ein tatsächlicher Datenvorgang stattfindet.


Referenz der Konfigurationsparameter

Das Folgende sind die standardmäßig unterstützten Datenbankverbindungsinformationen:

Keinefalse0false1Keinetrue.Achtung:Wenn Sie den pgsql-Datenbanktreiber verwenden, importieren Sie bitte zuerst die Datei thinkphp/library/think/db/connector/pgsql.sql zur Ausführung in die Datenbank.
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

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!

Verwandte Etiketten:
Quelle:cnblogs.com
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!