2017-09-12 1 views
0

J'ai un code binaire pour obtenir tout postmeta (WordPress) avec la méthode $ wpdb, mais je ne sais pas pourquoi le code ne fonctionne pas.Pourquoi cette requête SQL ne fonctionne pas

global $wpdb; 

$meta_key = "'_bbp_vs_name_1', '_bbp_vs_name_2'"; 
$tags_query = "Po"; 
$query  = $wpdb->esc_like($tags_query); 
$value  = '%' . $query . '%'; 

$ajax_teams = $wpdb->get_results($wpdb->prepare(" 
    SELECT * 
    FROM $wpdb->postmeta 
    WHERE meta_key IN ($meta_key) 
    AND meta_value LIKE %s 
    ", 
    $meta_key, 
    $value 
)); 

print_r($ajax_teams); 

Aidez-nous s'il vous plaît.

solutions de travail:

$ajax_teams = $wpdb->get_results($wpdb->prepare(" 
    SELECT * 
    FROM $wpdb->postmeta 
    WHERE meta_key IN ($meta_key) 
    AND meta_value LIKE %s 
    ", 
    $value 
)); 
+4

Vous semblez oublié une reliure: 'WHERE meta_key IN (% s)' –

+0

@ka_lin testé et ne fonctionne pas à – Opsional

+0

Can Pouvez-vous expliquer ce que vous essayez réellement d'accomplir? Il pourrait y avoir une alternative. En postmeta, les colonnes principales sont la clé et la valeur. Vous essayez d'attraper * en utilisant des clés et des valeurs. –

Répondre

0

Vous devez lier% s dans la requête. Mais vous avez donné la direction varible

$ajax_teams = $wpdb->get_results($wpdb->prepare(" 
    SELECT * 
    FROM $wpdb->postmeta 
    WHERE meta_key IN (%s) 
    AND meta_value LIKE %s 
    ", 
    $meta_key, 
    $value 
)); 

changer également la valeur à:

$value  = "'%".$query."%'"; 
+0

Ne fonctionne pas les gars :( – Opsional

+0

essayez la réponse éditée @Opsional –

+0

Ne fonctionne pas trop, je mets à jour la question pour résoudre ce problème :) merci pour l'inspiration – Opsional