Entwicklung: Neue Datenbankverbindung aufbauen

  • Hallo,

    ich entwickle gerade ein Plugin, welches eine Verbindung zu einer anderen Datenbank aufbaut, dort etwas ausliest und darstellt. Der Einfachheit halber, würde ich dabei gern die bereits existierrende WP-Klasse nutzen.

    Wenn ich nun jedoch folgendes versuche

    PHP
    define(KB_USER,'meinuser');
    define(KB_PASSWORD,'meinpasswort');
    define(KB_NAME,'dieanderedatenbank');
    define(KB_HOST,'meinhost');
    
    
    function blablub() {
          $kbdb = new wpdb(KB_USER, KB_PASSWORD, KB_NAME, KB_HOST);
    }

    funktioniert zwar mein Plugin, allerdings kommt WP selbst dann durcheinander und versucht auf meine zweite DB zuzugreifen. (Ich habe das Plugin in der Sidebar über allen anderen eingebunden und z.b. die Kategorien können dann nicht mehr ermittelt werden.)

    Ich verstehe das nicht so ganz, schließlich erzeuge ich doch extra ein neues Objekt und meine Konstanten heißen auch anders?

    Wie kann ich das Problem lösen? :confused:

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ich bin leider kein Pro in der OOP, aber es könnte daran liegen, dass die verschiedenen Eigenschaften global sind und die gesamte WP-Engine die wpdb-Klasse für die Datenbankzugriffe nutzt.

    Was Du machen kannst (wenn Du Dein Plugin unter die GPL oder eine kompatible Lizenz stellst), ist dass Du die Klasse aus wp-includes/wp-db.php kopierst und die Funktionen und Variablen umbenennst bzw. mit einem Präfix versiehst.

  • Hallo ihr beiden,

    danke für die Antworten.

    1) Auf die Idee die Klasse zu duplizieren bin ich auch schon gekommen. Fand die Lösung aber nicht so berauschend, daher habe ich erstmal gefragt, ob es vielleicht auch anders geht :) Wie gesagt mich irritiert das leicht. Bisher war ich immer der Meinung, dass mit einer Instanzierung auch solche Parallelconnections möglich sind. :? Muss mir wohl noch mal die Klasse ansich anschauen.

    2) Zugangsdaten sind die gleichen, nur die Datenbank selbst hat einen anderen Namen.

  • 2) Zugangsdaten sind die gleichen, nur die Datenbank selbst hat einen anderen Namen.

    sobald die zugangdaten identisch sind öffnet der mysqlclient keine weitere verbindung, sondern benutzt die vorhandene. Du kannst versuchen die Datenbank adresse auszutauschen ( 127.0.0.1 statt localhost) oder andere zugangsdaten einrichten um die weiterbenutzung zu verhindern.

  • sobald die zugangdaten identisch sind öffnet der mysqlclient keine weitere verbindung, sondern benutzt die vorhandene. Du kannst versuchen die Datenbank adresse auszutauschen ( 127.0.0.1 statt localhost) oder andere zugangsdaten einrichten um die weiterbenutzung zu verhindern.

    Oha, danke für die Info! :idea: Oh weia, mit sowas hab ich gar nicht gerechnet. Aber macht irgendwo Sinn, wenn mysql_connect() verwendet wird. Werde das mit 127.0.0.1 mal probieren, hoffentlich funktioniert das. Wechseln kann ich die Daten leider nicht, da Hostumgebung. Kann zwar Datenbanken anlegen, aber die haben alle die gleichen Zugangsdaten. :|

    Einmal editiert, zuletzt von cmi (27. September 2006 um 10:30)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!