1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Probleme mit $wpdb->query

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von formateins, 26. März 2013.

Schlagworte:
  1. formateins

    formateins Gast

    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:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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ß
     
  2. formateins

    formateins Gast

    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.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden