{"id":406,"date":"2017-05-06T10:23:12","date_gmt":"2017-05-06T08:23:12","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=406"},"modified":"2017-05-06T10:23:12","modified_gmt":"2017-05-06T08:23:12","slug":"schmankerl-fuer-alte-datenbanker-zugriff-auf-externe-daten-mit-dem-wpdb-objekt","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2017\/05\/06\/schmankerl-fuer-alte-datenbanker-zugriff-auf-externe-daten-mit-dem-wpdb-objekt\/","title":{"rendered":"Schmankerl f\u00fcr alte Datenbanker: Zugriff auf externe Daten mit dem wpdb-Objekt"},"content":{"rendered":"<h2>Was viele nicht wissen: Zugriff auf beliebige MySQL-Datenbanken in WordPress ganz einfach<\/h2>\n<p>Mit dem wpdb-Objekt sind wir ja inzwischen schon per Du, da hab ich schon genug Anwendungsbeispiele geliefert. Jetzt setz ich noch eins obendrauf: wir holen uns mal Daten aus einer externen MySQL-Datenbank. Das kann die DB einer anderen WordPress-Instanz sein, mu\u00df aber nicht, irgendeine gehostete MySQL-DB tuts auch. Wir brauchen dazu nur den Connect, also ganz das \u00dcbliche:<\/p>\n<ul>\n<li>Datenbankserver<\/li>\n<li>Datenbankname<\/li>\n<li>Datenbankuser<\/li>\n<li>Datenbankpasswort<\/li>\n<\/ul>\n<p>Und schon kann es losgehen. Ich leg mir die Connect-Daten gern auf Variable, das sieht dann z.B. so aus:<\/p>\n<p><em>$user = &#8218;U12345678&#8216;;<\/em><br \/>\n<em>$password = &#8218;meinPasswort&#8216;;<\/em><br \/>\n<em>$database = &#8218;DB12345678&#8216;;<\/em><br \/>\n<em>$server = &#8218;rdbms.strato.de&#8216;;<\/em><\/p>\n<h2>Der externe Connect mit dem wpdb-Objekt<\/h2>\n<p>Voraussetzung ist nat\u00fcrlich, da\u00df vorneweg <strong>global $wpdb<\/strong> deklariert wurde. Dann gehts ganz einfach:<\/p>\n<p><em>$wpdb = new wpdb($user, $password, $database, $server);<\/em><\/p>\n<p>Damit legen wir ein neues wpdb-Objekt an, das auf die externe Datenbank zugreift. Jetzt k\u00f6nnen wir nach Belieben auf die Tabellen in der externen Datenbank zugreifen, zum Beispiel so:<\/p>\n<h2>Der SELECT geht wie gehabt<\/h2>\n<p><em>$rows = $wpdb-&gt;get_results(&#8222;SELECT * FROM beispieltabelle&#8220;);<\/em><\/p>\n<p>Das d\u00fcrfte ihnen jetzt aber doch schwer bekannt vorkommen! Mit dem <em>$wpdb-&gt;get_results<\/em> haben wir ja schon die ganze Zeit gearbeitet, der gibt wie \u00fcblich ein Array zur\u00fcck, das das Ergebnis des Select enth\u00e4lt.<\/p>\n<h2>Der FOREACH &#8211; auch wie gehabt<\/h2>\n<p>Auch hier \u00e4ndert sich gar nichts, man greift \u00fcber die Feldnamen der externen Tabelle zu und formatiert sich seine Ausgabe nach Wunsch, zum Beispiel so:<\/p>\n<p><em>foreach ($rows as $obj) :<\/em><\/p>\n<p><em>\u00a0\u00a0 echo &#8222;&lt;h1&gt;&#8220;.$obj-&gt;feldname_1.&#8220;&lt;\/h1&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 echo &#8222;&lt;h2&gt;&#8220;.$obj-&gt;feldname_2.&#8220;&lt;\/h2&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 echo &#8222;&lt;p&gt;&#8220;.$obj-&gt;feldname_3.&#8220;&lt;\/p&gt;&#8220;;<\/em><\/p>\n<p><em>endforeach;<\/em><\/p>\n<p>Das wars schon! Wenn sie den Connect String haben, k\u00f6nnen sie aus WordPress heraus auf jede beliebige Datenbank im Web zugreifen und die gewohnten wpdb-Methoden daf\u00fcr verwenden. Ist immer wieder mal n\u00fctzlich!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was viele nicht wissen: Zugriff auf beliebige MySQL-Datenbanken in WordPress ganz einfach Mit dem wpdb-Objekt sind wir ja inzwischen schon per Du, da hab ich schon genug Anwendungsbeispiele geliefert. Jetzt setz ich noch eins obendrauf: wir holen uns mal Daten aus einer externen MySQL-Datenbank. Das kann die DB einer anderen WordPress-Instanz sein, mu\u00df aber nicht, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20,7,4,2],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/406"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=406"}],"version-history":[{"count":1,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/406\/revisions"}],"predecessor-version":[{"id":407,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/406\/revisions\/407"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}