


So lösen Sie das Problem der Multi-Datenbank-Verbindung in ThinkPHP
In diesem Artikel wird hauptsächlich die Lösung von ThinkPHP zur Realisierung einer Verbindung mit mehreren Datenbanken vorgestellt. Freunde, die sie benötigen, können darauf verweisen.
Wenn ThinkPHP die Verbindung mehrerer Daten realisiert und sich die Datenbank auf demselben Server befindet, Das ist alles, was Sie brauchen. Definieren Sie das Modell:
class MembersModel extends Model{ protected $trueTableName = 'members.members'; //数据库名.表名(包含了前缀) }
Dann können Sie das Modell wie D("Mitglieder"); instanziieren und wie ein normales Modell betreiben.
Aber später stellte sich heraus, dass sich seine Datenbanken auf zwei verschiedenen Servern befanden, sodass die oben beschriebene Methode nicht funktionierte.
Zu diesem Zeitpunkt müssen Sie die Multi-Datenverbindungsfunktion von TP verwenden.
In diesem Zusammenhang haben wir nach Konsultation der offiziellen Dokumentation zum Testen und Korrigieren die folgende Lösung gefunden:
Um eine Multidatenverbindung herzustellen, müssen Sie zunächst die Datenbankkonfigurationsparameter erstellen . Wenn Sie jedoch jedes Mal, wenn Sie eine Verbindung mit mehreren Datenbanken herstellen, ein Datenbankkonfigurationsarray erstellen, ist es sehr mühsam, es in die Konfigurationsdatei zu schreiben. Wie man hier schreibt, erfordert noch einige Fähigkeiten.
<?php $config= array( 'DEBUG_MODE'=>true, 'default_module'=>'Index', 'ROUTER_ON'=>TRUE, 'DATA_RESULT_TYPE'=>1, 'SHOW_RUN_TIME'=>true, // 运行时间显示 'SHOW_ADV_TIME'=>true, // 显示详细的运行时间 'SHOW_DB_TIMES'=>true, // 显示数据库查询和写入次数 'SHOW_CACHE_TIMES'=>true, // 显示缓存操作次数 'SHOW_USE_MEM'=>true, // 显示内存开销 'HTML_FILE_SUFFIX'=>'.shtml', // 默认静态文件后缀 'HTML_CACHE_ON' =>false, // 默认关闭静态缓存 'HTML_CACHE_TIME'=>60, // 静态缓存有效期 'HTML_READ_TYPE'=>1, // 静态缓存读取方式 0 readfile 1 redirect 'HTML_URL_SUFFIX'=>'.shtml', // 伪静态后缀设置 //默认数据库链接 'DB_TYPE'=>'mysql', 'DB_HOST'=>'localhost', 'DB_NAME'=>'news', 'DB_USER'=>'root', 'DB_PWD'=>'123', 'DB_PORT'=>'3306', 'DB_PREFIX'=>'news_', //我的第一个数据库连接 'DB_BBS'=>array( 'dbms' => 'mysql', 'username' => 'discuz', 'password' => '123', 'hostname' => 'localhost', 'hostport' => '3306', 'database' => 'discuz' ), //第二个数据库链接, 'DB_NEWS'=>array( 'dbms'=>'mysql', 'username'=>'root', 'password'=>'123', 'hostname'=>'localhost', 'hostport'=>'3306', 'database'=>'news' ) ); return $config; ?>
An dieser Stelle können wir C („DB_BBS“) und C („DB_NEWS“) verwenden, um das Konfigurationsarray der Datenbank abzurufen.
Nach der Konfiguration müssen Sie nun das Modell instanziieren. Da unser Modell zwei verschiedene Datenbankverbindungen verwenden muss, verwendet die Projektkonfigurationsdatei standardmäßig eine Datenbankkonfiguration. Wenn Sie ein Modell einer bestimmten Tabelle wie UserModel.class.php erstellen,
Wenn Sie D("Benutzer") verwenden. ; aber wenn in der aktuellen Standarddatenbank keine Benutzertabelle vorhanden ist, wird ein Fehler gemeldet. Wir werden also ein leeres Modell erstellen. Leere Modelle wählen keine Tabellen aus.
Es gibt zwei Möglichkeiten, ein leeres Modell zu erstellen. Sowohl $dao=D(); als auch $dao=new Model(); sind in Ordnung.
$dao=D();
Nach der Instanziierung des Modells müssen wir ein Datenbankmodell hinzufügen;
$dao->addConnect(C("DB_BBS"),1,true); $dao->addConnect(C("DB_NEWS"),2,true);
sagte: Schauen Sie sich addConnect() an. Der Prototyp dieser Funktion unterscheidet sich zwischen 1.0.3 und 1.0.4.
Der Prototyp in 1.0.3 ist:
boolean addConnect (mixed $config, mixed $linkNum, [boolean $eqType = true])
Der Prototyp in 1.0.4 ist:
boolean addConnect (mixed $config, mixed $linkNum)
Der dritte Parameter fehlt.
Der erste Parameter ist das Konfigurationsarray der Datenbank und der zweite Parameter ist die Nummer der hinzugefügten Verbindung. Diese Nummer muss beim Umschalten der Datenbankverbindung als Seriennummer der Verbindung angegeben werden. Beachten Sie, dass die integrierte Datenbankverbindungssequenznummer 0 ist, daher sollte die zusätzliche Datenbankverbindungssequenznummer bei 1 beginnen. Der dritte Parameter lautet: Wenn die beiden Datenbanken dieselbe Verbindung haben, ist dies wahr ; >
$dao->switchConnect(2);Da die Verbindung zur Datenbank erst hier hergestellt wird und nein Die Tabelle ist ausgewählt, daher besteht der nächste Schritt darin, die Tabelle auszuwählen.
Beachten Sie, dass der Tabellenname hier der vollständige Name ist, der aus dem Tabellenpräfix und dem Tabellennamen besteht. Weil wir im Konfigurationsarray kein Präfix für die Verbindung zur Datenbank haben. Ich denke, es sollte definierbar sein, aber ich weiß es nicht. Das ist es für den Moment.
$dao->table("cdb_members");Danach können Sie dieses Modell wie ein normales Modell verwenden.
Wenn ich beispielsweise alle Informationen des Benutzers mit der übergebenen ID abfragen möchte:
$map=array("id"=>$_GET["id"]); $res=$dao->find($map);Sie können sehen, ob die Abfrage erfolgreich ist.
dump($res);Wenn Sie jetzt die Datenbanktabelle von DB_BBS verwenden möchten, müssen Sie nur die Verbindung erneut wechseln
$dao->switchConnect(2);Wählen Sie dann die Tabelle aus, die abgefragt werden soll. Denken Sie daran, dass Sie die Tabelle nach dem Modellwechsel erneut auswählen müssen, da sonst ein Fehler auftritt.
Danach können Sie es wie ein normales Modell bedienen.
Im Folgenden wird auf mehrere Probleme im Handbuch hingewiesen:
2. Die Parameter von addConnect() sind in den verschiedenen Versionen unterschiedlich und werden nicht im Handbuch beschrieben.
3 , was nicht in diesem Handbuch enthalten ist.
ThinkPHP implementiert eine Ajax-ähnliche offizielle Website-Suchfunktion
php float fängt Gleitkommazeichen ohne Rundung ab String-Methode
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der Multi-Datenbank-Verbindung in ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Der Artikel erläutert, wie Schnittstellen in PHP erstellt, implementiert und verwendet werden und sich auf ihre Vorteile für die Organisation von Code und die Wartbarkeit konzentriert.

In dem Artikel werden die Unterschiede zwischen CryPT () und Passage_hash () in PHP für Passwort -Hashing erörtert und sich auf ihre Implementierung, Sicherheit und Eignung für moderne Webanwendungen konzentriert.

In Artikel werden in PHP durch Eingabevalidierung, Ausgabecodierung und Verwendung von Tools wie OWASP ESAPI und HTML-Reinigungsmittel die Verhinderung des Cross-Site-Skripts (XSS) erläutert.

Das Autolading in PHP lädt bei Bedarf die Klassendateien automatisch und verbessert die Leistung durch Reduzierung des Speichergebrauchs und Verbesserung der Codeorganisation. Zu den Best Practices gehört die Verwendung von PSR-4 und das organisierende Code effektiv.

PHP -Streams vereinheitlichen die Handhabung von Ressourcen wie Dateien, Netzwerkhöhlen und Komprimierungsformaten über eine konsistente API, die Komplexität abstrahieren und die Flexibilität und Effizienz der Code verbessern.

In dem Artikel wird das Verwalten von Datei -Upload -Größen in PHP erläutert, wobei der Schwerpunkt auf der Standardgrenze von 2 MB und der Erhöhung der PHP.ini -Einstellungen liegt.

In dem Artikel werden nullbare Typen in PHP erörtert, die in PHP 7.1 eingeführt wurden und ermöglicht, dass Variablen oder Parameter entweder ein angegebener Typ oder ein Null sind. Es zeigt Vorteile wie eine verbesserte Lesbarkeit, Typsicherheit und explizite Absicht und erklärt, wie man deklariert

Der Artikel erörtert die Unterschiede zwischen UNSET () und Unlink () in der Programmierung und konzentriert sich auf ihre Zwecke und Anwendungsfälle. UnSet () entfernt Variablen aus dem Speicher, während Unlink () Dateien aus dem Dateisystem löscht. Beide sind für Effec von entscheidender Bedeutung


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
