Probleme mit $wpdb->query

  • Servus,

    aktuell programmiere ich eine Umkreissuche im Rahmen eines Wordpress-Plugins.

    Als Datenbestand nutze ich eine selbst generierte Tabelle auf Basis der OpenGeoDB. Diese befindet sich in der verwendeten Wordpress-Datenbank.

    Vorab: die Entwicklungsversion (nutzt NICHT die Wordpress-API) funktioniert fehlerfrei und liefert die benötigten Datensätze einwandfrei zurück.

    Im Plugin selbst ist eine eigene Funktion deklariert. Als Return-Wert sollen Datensatz-ID's geliefert werden.

    Nachdem ich nun diverse Quellen "durch" habe (Stackoverflow & Co.), probiere ich es hier mal.

    1. Über $wpdb->get_row() hole ich mir die notwendige ID (intern, GeoDB) der gesuchten PLZ.
    2. Folgende SQL-Anweisung führt die Berechnung durch (Radius um Start-PLZ) und soll die entsprechenden Postleitzahlen im Umkreis liefern:

    Die Variable $sid wird im Schritt 1 gesetzt. Funktioniert.

    Problem:
    Jegliche Versuche, via Query (egal welche Variante, $wpdb->get_results()) ein verarbeitbares Ergebnis zu bekommen, scheitern. Exakt das gleiche SQL-Statement wird im regulären mysql_query() sauber verarbeitet.

    Hintergrund:
    Durch den CROSS JOIN entstehen redundante Spaltennamen im Resultset. Aus dem Grund lasse ich mit $wpdb->get_results($usql, ARRAY_N) ein numerisches Resultset erstellen.

    Eine Überprüfung mit var_dump() ergab, dass in allen Keys die gleichen Werte stehen. WTF?

    Meine Frage richtet sich an die Datenbankmenschen, welche die $wpdb-Klasse geblickt haben: Wo liegt das Problem?

    Zwar könnte ich die API links liegen lassen, da ich aber im weiteren Verlauf des Projektes die Umkreissuche als eigenständiges Plugin weiterentwickeln möchte, mag ich sie auch nutzen.

    Wo ist mein Denk-/Verständnisfehler?

    Any input appreciated!

    Gruß

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hilfe zur Selbsthilfe:

    Das SQL-Statement jage ich im Vorfeld zum Escapen durch $wpdb->prepare. Im Anschluss nutze ich jetzt stupide mysql_query und pumpe noch stupider die notwendigen Values mittels mysql_fetch_array in mein Array. Funktioniert.

    Offensichtlich gibt es ein Problem mit dem CROSS JOIN in der WPDB-Klasse. Ansonsten mag es wohl an einem fehlenden Alias liegen.

    Keine elegante Lösung, aber erstmal ausreichend.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!