it-swarm.com.de

Wie verwende ich% like% in SQL-Anweisung WordPress

ich benutze eine wie % text% Anweisung in WordPress:

SELECT *  FROM location  WHERE name LIKE "%on" OR name LIKE "%on%"

ich habe alles versucht, aber es läuft nicht:

$wpdb->get_results($wpdb -> prepare("SELECT *  FROM location  WHERE name LIKE %1s OR name LIKE %2s", '%'.like_escape('on'), '%'.like_escape('on').'%'), ARRAY_A);

bitte hilf mir

1
rocky

$wpdb->prepare() unterstützt sprintf()-Platzhalter nicht vollständig.

Aus dem Codex :

Der Abfrageparameter für prepare akzeptiert sprintf () -ähnliche Platzhalter. Die Formate% s (Zeichenfolge),% d (Ganzzahl) und% f (Gleitkommazahl) werden unterstützt.

Dies ist nicht ganz offensichtlich, aber die Austauschformate für Argumente (z. B. %1$d) werden nicht unterstützt (auf jeden Fall haben Sie die falsche Syntax: Es sollte %2$s statt %2s sein)

global $wpdb;
$wpdb->prepare(
        "SELECT *  FROM location  
         WHERE name LIKE %s OR name LIKE %s", 
         '%'.$wpdb->esc_like('on'), 
         '%'.$wpdb->esc_like('on').'%'
), ARRAY_A);

Ich gehe davon aus, dass 'on' durch einen unbekannten Wert ersetzt wird - andernfalls ist $wpdb->prepare() nicht erforderlich. Unabhängig davon macht die zweite Bedingung in Ihrem SQL die erste obsolet.

4
Stephen Harris