Verwenden von wpdb zum Herstellen einer Verbindung mit einer separaten database

Ich möchte wpdb mit einer anderen database verbinden. Wie erstelle ich die Instanz und übergebe sie den databasenamen / Benutzername / Passwort?

Vielen Dank

Solutions Collecting From Web of "Verwenden von wpdb zum Herstellen einer Verbindung mit einer separaten database"

Ja es ist möglich.

Das wpdb-Objekt kann verwendet werden, um auf jede database zuzugreifen und jede Tabelle abzufragen. Absolut nicht nötig WordPress bezogen zu sein, was sehr interessant ist.

Der Vorteil ist die Möglichkeit, alle wpdb-classn und -functionen wie get_results usw. zu get_results , so dass das Rad nicht neu erfunden werden muss.

Hier ist wie:

 $mydb = new wpdb('username','password','database','localhost'); $rows = $mydb->get_results("select Name from my_table"); echo "
    "; foreach ($rows as $obj) : echo "
  • ".$obj->Name."
  • "; endforeach; echo "
";

Die Verbindung zu einer zweiten database ist in WordPress einfach. Sie erstellen einfach eine neue Instanz der WPDB-class und verwenden sie genauso wie Sie die Standard-$ wpdb-Instanz verwenden würden, die wir alle kennen und lieben.

Unter der Annahme, dass die zweite database dieselben Login-Informationen wie die Haupt-WP-Datei hat, können Sie sogar die vordefinierten Konstanten von wp-config.php verwenden, um eine Festcodierung der Login-Informationen zu vermeiden.

 /** * Instantiate the wpdb class to connect to your second database, $database_name */ $second_db = new wpdb(DB_USER, DB_PASSWORD, $database_name, DB_HOST); /** * Use the new database object just like you would use $wpdb */ $results = $second_db->get_results($your_query); 

niemand hat das gesagt, also dachte ich, ich würde einen noch einfacheren Weg hinzufügen ..

Solange Ihre zusätzliche database die gleichen Benutzer / Pass-Details hat, um auf sie als Ihre WordPress-database zuzugreifen, können Sie den databasenamen vor dem Tabellennamen wie folgt verwenden

 $query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1'); $result = $wpdb->get_results($query); 

Während diese funktionieren, werden Sie die Möglichkeit verlieren, die “anderen” benutzerdefinierten functionen wie get_post_custom und WordPress-Abfragen zu verwenden. Die einfache Lösung ist

 $wpdb->select('database_name'); 

das ändert die database systemweit (eine mysql select_db). Die Methode database.table funktioniert, wenn Sie nur eine einfache Abfrage erstellen möchten. Wenn Sie jedoch auf ein anderes WordPress-Blog zugreifen möchten, können Sie select verwenden. Du musst es nur ändern, wenn du fertig bist oder dein Blog seltsame Dinge tut.

Ich kann noch nichts sagen, aber ich wollte die Antwort von Wadih M. erweitern (was großartig ist).

Die databaseklasse von WP ist eine angepasste Version von Justin Vincent ezSQL. Wenn Ihnen die Oberfläche gefällt und Sie eine Website erstellen möchten, die nicht auf WordPress basiert, sollten Sie sie sich ansehen : http://justinvincent.com/ezsql

Ich hatte $wpdb , mit $wpdb eine Verbindung zu einer zweiten Blog-database von einer übergeordneten Website $wpdb , die zwei Blogs aktualisieren muss. Ich habe $wpdb->select($dbname, $dbh) , um die zweite database auszuwählen, aber ich erhielt immer noch Ergebnisse von der ersten database.

Ich triggerse das Problem, indem ich wp_cache_flush() , um den WordPress-Cache zu löschen, bevor ich WP-functionen in der zweiten database wp_cache_flush() .