• 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 vor 4 Jahren, 1 Monat von rubbeldiekatz geändert.
    • Dieses Thema wurde vor 4 Jahren, 1 Monat von rubbeldiekatz geändert.
    • Dieses Thema wurde vor 4 Jahren, 1 Monat von rubbeldiekatz geändert.
    • Dieses Thema wurde vor 4 Jahren, 1 Monat von rubbeldiekatz geändert.
Ansicht von 7 Antworten – 1 bis 7 (von insgesamt 7)
  • 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 vor 4 Jahren, 1 Monat von Marcus Spanier geändert.
    Thread-Starter 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 vor 4 Jahren, 1 Monat von rubbeldiekatz geändert.
    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    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-Starter 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 vor 4 Jahren, 1 Monat von rubbeldiekatz geändert.
    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

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

    Thread-Starter 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

    Moderator Michi91

    (@michi91)

    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.