2017-07-28 4 views
0

Hier habe ich diese Abfrage, Wenn ich den Wert von% f und% d als 1 und 1 ersetzen, wird es in meinem phpmyadmin Panel funktionieren, aber ich führe diese Abfrage über wpdb get_results mit Bereite es vor, es funktioniert nicht. Alle Werte werden korrekt übergeben, aber ich bekomme immer noch null als Ausgabe.WPDB funktioniert nicht, SQL-Abfrage funktioniert in phpmyadmin

$f = $wc * (($ul + 100)/100); 

$capabilities = $wpdb->prefix."capabilities"; 

$sql = " 
SELECT u.*, up.*, up.pid, (up.ros - up.soh)/(%f) as qty_suggested 
FROM $wpdb->users u 
INNER JOIN wp_deals_users_products up 
ON u.ID = up.user_id 
INNER JOIN $wpdb->usermeta um 
ON u.ID = um.user_id    
WHERE up.pid = %d 
AND um.meta_key = '$capabilities' 
AND um.meta_value LIKE '%subscriber%' 
"; 

//echo $sql; This echoes the sql which I tested in phpmyadmin sql query runner 

$results = $wpdb->get_results(
    $wpdb->prepare( 
     $sql, 
     $f, 
     $pid 
     ) 
    ); 

echo json_encode($results); 

Wenn ich vorbereiten entfernen und Lauf Abfrage direkt oder mit fest codierten 1, da beide Werte für% d und% f ich immer noch null erhalten. Gleiche Abfrage in phpMyAdmin SQL Abschnitt

EDIT funktionieren:

Dies ist die letzte Abfrage, die Funktion in wpdb vorbereiten geht:

SELECT u.*, up.*, up.pid, (up.ros - up.soh)/(%f) as qty_suggested 
     FROM wp_users u 
     INNER JOIN wp_deals_users_products up 
     ON u.ID = up.user_id 
     INNER JOIN wp_usermeta um 
     ON u.ID = um.user_id    
     WHERE up.pid = %d 
     AND um.meta_key = 'wp_capabilities' 
     AND um.meta_value LIKE '%subscriber%' 

enter image description here enter image description here

Antwort

2

Sie verwenden falsche Syntax in der Nähe von an die LIKE.

Sie müssen diesen Weg verwenden.

$like_str = 'subscriber'; 
$f = $wc * (($ul + 100)/100); 

$capabilities = $wpdb->prefix."capabilities"; 

    $sql = " 
    SELECT u.*, up.*, up.pid, (up.ros - up.soh)/(%f) as qty_suggested 
    FROM $wpdb->users u 
    INNER JOIN wp_deals_users_products up 
    ON u.ID = up.user_id 
    INNER JOIN $wpdb->usermeta um 
    ON u.ID = um.user_id    
    WHERE up.pid = %d 
    AND um.meta_key = '$capabilities' 
    AND um.meta_value LIKE %s"; 




    $query = $wpdb->prepare($sql,$f,$pid,'%' . $wpdb->esc_like($like_str) . '%'); 



    $result = $wpdb->get_results($query); 
    echo json_encode($result); 
+0

danke, es hat funktioniert ... Ich vermutete für einen sehr kurzen Moment, dass es% in LIKE Aussage sein könnte. Ich bekomme jetzt Ergebnisse. – Waleed

0

Sieht aus wie die Werte von valirables $f und $pid kommen nicht richtig. Druck aus der letzten Abfrage, um zu sehen, ob die Variablen auf die ‚$ sql‘ wie diese richtig übergeben werden:

$sql = " 
SELECT u.*, up.*, up.pid, (up.ros - up.soh)/(%f) as qty_suggested 
FROM $wpdb->users u 
INNER JOIN wp_deals_users_products up 
ON u.ID = up.user_id 
INNER JOIN $wpdb->usermeta um 
ON u.ID = um.user_id    
WHERE up.pid = %d 
AND um.meta_key = '$capabilities' 
AND um.meta_value LIKE '%subscriber%' 
"; 

echo $sql; 

Debug $ sql und versuchen, die Abfrage, die Ihr get in phpMyAdmin.

+0

Es ist eine AJAX-Anfrage auf einem BTN-Klick, nur ich benutze diese WP-Installation und wenn ich $ wpdb-> letzte_Abfrage Echo ich bekomme dies: SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1 Ich verstehe nicht warum ... – Waleed

+0

$ wpdb-> Abfragen zeigt 4 Abfragen und meine Abfrage ist nicht da: D – Waleed

Verwandte Themen