web-dev-qa-db-fra.com

MySQL LIKE ne fonctionne pas

Il semble que l'opérateur LIKE de MySQL se comporte comme un opérateur =.

La requête MySQL suivante renvoie le résultat attendu (1 entrée):

$meta_key = '_locality';
$meta_value = 'The Hague';
$post_ids = $wpdb->get_col( $wpdb->prepare( 
  "
  SELECT      post_id
  FROM        $wpdb->postmeta
  WHERE       meta_key = %s
              AND meta_value LIKE %s
  ", 
  $meta_key, 
  $meta_value
) ); 

Mais ce qui suit retourne un tableau vide:

$meta_key = '_locality';
$meta_value = 'The';
$post_ids = $wpdb->get_col( $wpdb->prepare( 
  "
  SELECT      post_id
  FROM        $wpdb->postmeta
  WHERE       meta_key = %s
              AND meta_value LIKE %s
  ", 
  $meta_key, 
  $meta_value
) ); 

Qu'est-ce que je fais mal ici?

1
pdme

Essayez de remplacer:

AND meta_value LIKE %s

avec

AND meta_value LIKE '%%%s%%'

de sorte que votre SQL deviendra:

AND meta_value LIKE '%The%'

au lieu de:

AND meta_value LIKE 'The'
3
birgire