Support » Allgemeine Fragen » Mit WordPress auf eine externe DB zugreifen

  • Guten Morgen

    Ich habe eine WordPress Installation mit einer normalen Datenbank für diese Seite (läuft).
    Zusätzlich habe ich eine eigene DB auf dem gleichen Server angelegt.
    Auf diese, eigene DB, möchte ich von meinem WordPress zugreifen und ein paar Sachen auf einer Seite ausgeben.
    Ich nutze dafür das Plugin „Woody snippets“. Damit kann man z.B. PHP-Code mit einem Shortcode auf eine Seite bringen.

    Ich habe hier gelesen, wie man es macht. Aber ich bekomme keine vernünftige Ausgabe.
    Da stehen aber einige Daten drin.

    https://wordpress.stackexchange.com/questions/326610/is-it-possible-to-query-from-external-database/326611#326611

    Mein Code Beispiel
    Die Daten sind korrekt. Ich greife schon mit einer eigenen Seite (verwaltung) darauf zu.

    
    $second_db = new wpdb(DB_USER, DB_PASSWORD, $database, DB_HOST);
    $results = $second_db->get_results("SELECT * FROM wohnungen");
    
    $gefundene_wohnungen = $wpdb->num_rows;
    foreach($results as $flat){
      echo "wie: ".$flat->wie."<\br>";
      echo "obj: ".$flat->obj."<\br>";
    }
    echo "Gefundene Wohnungen: ".$gefundene_wohnungen;

    Die Ausgabe ergibt immer: Gefundene Wohnungen: 0

    Was mache ich hier falsch?

    Danke

    • Dieses Thema wurde geändert vor 6 Monaten, 3 Wochen von rubbeldiekatz.
    • Dieses Thema wurde geändert vor 6 Monaten, 3 Wochen von rubbeldiekatz.
    • Dieses Thema wurde geändert vor 6 Monaten, 3 Wochen von rubbeldiekatz.
    • Dieses Thema wurde geändert vor 6 Monaten, 3 Wochen von rubbeldiekatz.
Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Moderator espiat

    (@espiat)

    Hallo.

    Hast du mal $results in einem var-dump ausgegeben?

    Auf den ersten Blick:
    Du hast ja kein objekt namens $wpdb

    Deswegen:

    echo $second_db->num_rows;

    ?

    • Diese Antwort wurde geändert vor 6 Monaten, 3 Wochen von espiat.
    Thread-Ersteller rubbeldiekatz

    (@rubbeldiekatz)

    Hi

    Was meinst du mit „Du hast ja kein objekt namens $wpdb“ ?
    Ich hab noch keine Erfahrungen mit den Zugriff auf externe DB.

    echo $second_db->num_rows; ergibt die Ausgabe 0
    echo var_dump($results); ergibt die Ausgabe NULL

    Hast du noch eine Idee?

    • Diese Antwort wurde geändert vor 6 Monaten, 2 Wochen von rubbeldiekatz.

    Du kannst mit var_dump() immer erst mal testen, was eine Variable enthält, bevor du sie weiterverwendest. In deinem Fall solltest du jede Variable testen, also als erstes prüfen, was bei

    $second_db = new wpdb(DB_USER, DB_PASSWORD, $database, DB_HOST);
    var_dump( $second_db );

    ausgegeben wird. Ist das NULL oder ein String mit einer Fehlermeldung, stimmt bei deinem Datenbank-Abruf etwas nicht und der Rest kann auch nicht funktionieren.

    Thread-Ersteller rubbeldiekatz

    (@rubbeldiekatz)

    Hi
    var_dump($second_db) ergibt

    
    object(wpdb)#11481 (60) { 
    ["show_errors"]=> bool(false) 
    ["suppress_errors"]=> bool(false) 
    ["last_error"]=> string(0) "" 
    ["num_queries"]=> int(0) 
    ["num_rows"]=> int(0) 
    ["rows_affected"]=> int(0) 
    ["insert_id"]=> int(0) 
    ["last_query"]=> NULL 
    ["last_result"]=> NULL 
    ["result":protected]=> NULL 
    ["col_meta":protected]=> array(0) { } 
    ["table_charset":protected]=> array(0) { } 
    ["check_current_query":protected]=> bool(true) 
    ["checking_collation":"wpdb":private]=> bool(false) 
    ["col_info":protected]=> NULL 
    ["queries"]=> NULL 
    ["reconnect_retries":protected]=> int(5) 
    ["prefix"]=> string(0) "" 
    ["base_prefix"]=> NULL 
    ["ready"]=> bool(false) 
    ["blogid"]=> int(0) 
    ["siteid"]=> int(0) 
    ["tables"]=> array(10) { [0]=> string(5) "posts" [1]=> string(8) "comments" [2]=> string(5) "links" [3]=> string(7) "options" [4]=> string(8) "postmeta" [5]=> string(5) "terms" [6]=> string(13) "term_taxonomy" [7]=> string(18) "term_relationships" [8]=> string(8) "termmeta" [9]=> string(11) "commentmeta" } ["old_tables"]=> array(3) { [0]=> string(10) "categories" [1]=> string(8) "post2cat" [2]=> string(8) "link2cat" } ["global_tables"]=> array(2) { [0]=> string(5) "users" [1]=> string(8) "usermeta" } ["ms_global_tables"]=> array(7) { [0]=> string(5) "blogs" [1]=> string(8) "blogmeta" [2]=> string(7) "signups" [3]=> string(4) "site" [4]=> string(8) "sitemeta" [5]=> string(14) "sitecategories" [6]=> string(16) "registration_log" } ["comments"]=> NULL ["commentmeta"]=> NULL ["links"]=> NULL ["options"]=> NULL ["postmeta"]=> NULL ["posts"]=> NULL ["terms"]=> NULL ["term_relationships"]=> NULL ["term_taxonomy"]=> NULL ["termmeta"]=> NULL ["usermeta"]=> NULL ["users"]=> NULL ["blogs"]=> NULL ["blogmeta"]=> NULL ["registration_log"]=> NULL ["signups"]=> NULL ["site"]=> NULL ["sitecategories"]=> NULL ["sitemeta"]=> NULL ["field_types"]=> array(0) { } ["charset"]=> NULL ["collate"]=> NULL ["dbuser":protected]=> string(14) "localhost:3306" ["dbpassword":protected]=> string(8) "wp_vabii" ["dbname":protected]=> string(16) "t@2H^8#6#nc%sW16" ["dbhost":protected]=> string(8) "wp_mfgwd" ["dbh":protected]=> NULL ["func_call"]=> NULL ["is_mysql"]=> bool(true) ["incompatible_modes":protected]=> array(6) { [0]=> string(12) "NO_ZERO_DATE" [1]=> string(18) "ONLY_FULL_GROUP_BY" [2]=> string(19) "STRICT_TRANS_TABLES" [3]=> string(17) "STRICT_ALL_TABLES" [4]=> string(11) "TRADITIONAL" [5]=> string(4) "ANSI" } ["use_mysqli":"wpdb":private]=> bool(true) ["has_connected":"wpdb":private]=> bool(false) ["time_start"]=> NULL ["error"]=> object(WP_Error)#10147 (3) { ["errors"]=> array(1) { ["db_connect_fail"]=> array(1) { [0]=> string(852) "
    

    oh je, was bedeutet das?

    • Diese Antwort wurde geändert vor 6 Monaten, 2 Wochen von rubbeldiekatz.

    Entweder verwendest du die falsche Datenbank oder es konnte nichts ausgelesen werden. Dann hätte ich allerdings eine Fehlermeldung erwartet.

    Thread-Ersteller rubbeldiekatz

    (@rubbeldiekatz)

    HI Bego Mario Garde (@pixolin)

    Ich müsste dir mal eine Email schreiben, die nur du sehen kannst. Ist das möglich?

    LG

    Ich empfehle die Fehlermeldungen mal anzeigen zu lassen. Wie man wpdb debugt wird hier ganz nett erklärt: https://wordpress.stackexchange.com/questions/179058/why-wpdb-show-errors-and-print-error-is-showing-an-output-even-if-the-quer

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Das Thema „Mit WordPress auf eine externe DB zugreifen“ ist für neue Antworten geschlossen.