2017-07-28 8 views
0

ここで私は%fと%dの値を1と1に置き換えるとphpmyadminパネルで動作しますが、wpdb get_results準備はできません。すべての値が正しく渡されていますが、出力としてnullが返されます。WPDBが機能しない、SQLクエリが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); 

私はまだヌル取得%dと%fに対する両方の値としてハードコードさ1で準備して実行するクエリを、直接または削除した場合。これは、関数を用意wpdbに入り、最終的なクエリである

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

答えて

2

あなたが近くに間違った構文を使用したのと同じクエリは、phpmyadminののSQLセクションに

EDITを正常に動作しますLIKE

この方法で使用する必要があります。

$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

ありがとう、それは働いた...私はそれがLIKEステートメントの%になる可能性が非常に短い瞬間を疑った。私は今結果を得る。 – Waleed

0

valirables $f$pidの値が正しくまで来ていないように見えます。

$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; 

デバッグ$ sqlを、そのphpmyadminの中にあなたのGETのクエリを試してみてください:変数が適切にこのような「$ sqlを」に渡されているかどうかを確認するために を印刷し、最終的なクエリを。

+0

これは、btnクリックでのajaxリクエストです。このwpインストールを使用していますが、$ wpdb-> last_queryをエコーすると、次のように表示されます:SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1 私は分かりませんなぜ... – Waleed

+0

$ wpdb-> queriesは4つのクエリを表示し、クエリはそこにありません:D – Waleed

関連する問題