web-dev-qa-db-fra.com

Utilisation de LIKE dans db_query dans D7

J'ai une requête comme celle-ci dans Drupal 6:

$sql = 'SELECT sid, score FROM search_index WHERE Word LIKE "%%%s%%"';
$result = db_query($sql,$search_term);

Et cela a bien fonctionné, mais maintenant je passe à Drupal 7.

J'ai lu et cela est censé fonctionner, mais ce n'est pas:

$sql = 'SELECT sid, score FROM search_index WHERE Word LIKE "%:term"';
$result = db_query($sql,array(':term'=>$search_term));

Est-ce que quelqu'un sait ce que je fais mal?

18
Coomie

Essaye ça.

 $sql = 'SELECT sid, score FROM {search_index} WHERE Word LIKE :term';
 $result = db_query($sql, array(':term' => '%' . db_like($search_term)));
17
Sithu

Si vous suivez le lien suivant, http://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7 Cela vous dira que,

Notez que les espaces réservés doivent être une valeur "complète". Par exemple, lors de l'exécution d'une requête LIKE, le caractère générique SQL,%, doit faire partie de la valeur, pas la requête elle-même.

Donc

SELECT nid, title FROM {node} WHERE title LIKE :title%;

Est incorrect.

La requête doit être

SELECT nid, title FROM {node} WHERE title LIKE :title;
0
Aneek Mukhopadhyay