Verbindung zu einer 2. DB gibt mir keine Ergebnisse bei der Abfrage

Ich versuche auf eine andere DB auf dem gleichen localhost zuzugreifen, wie meine wp db ist, und ich tat das so:

functionen.php:

add_action('init','my_new_db'); function my_new_db(){ $newdb = new wpdb( 'test', 'test', 'test', 'localhost'); $newdb->show_errors(); } 

Folgendes in page.php:

  prepare( "SELECT `...`, `...` FROM ..." ); $result = $newdb->get_results($test); return($result); ?> 

Die Punkte sind korrekt ausgefüllt, mach dir keine Sorgen darüber, obwohl dies die Nachricht ist, die ich abfrage, und ich bekomme keinen Fehler oder kein Ergebnis.

Solutions Collecting From Web of "Verbindung zu einer 2. DB gibt mir keine Ergebnisse bei der Abfrage"

Dies ist ein variabler Bereich, ein reines PHP, Problem im Herzen.

Ich habe es nicht geschlossen, weil ich annehme, dass der Fehler wiederum auf einem Missverständnis des init Hooks oder Hooks im Allgemeinen beruht, was WordPress-spezifisch ist.

  1. In PHP muss eine globale global vor der ersten Verwendung als global deklariert werden.
  2. Der init Hook wird sehr früh beim Laden der Seite page.php , lange bevor Ihre page.php ausgeführt wird
  3. Ihre $newdb Variable wird erst mit page.php als global page.php
  4. Daher wird die Variable global deklariert, nachdem sie in der init Aktion verwendet wurde, und somit zu spät .

PHP wird Zeile für Zeile nacheinander ausgeführt. Auftragsangelegenheiten. Die Reihenfolge, die aktiviert wird, bestimmt die Reihenfolge des Codes in einer der “angehängten” functionen.

Um dies zu beheben, deklarieren Sie Ihre Variable global im Callback zum init .

 add_action('init','my_new_db'); function my_new_db(){ global $newdb; $newdb = new wpdb( 'test', 'test', 'test', 'localhost'); $newdb->show_errors(); } 

Sie benötigen weiterhin global $newdb; in Ihrer page.php Datei, um auf das von Ihnen erstellte globale page.php zuzugreifen. Entferne das nicht.