J'ai une requête de base de données simple dans codeigniter, mais je ne peux pas faire fonctionner la recherche avec un caractère générique. Voici mon code:
$this->db->like('film.title',"%$query%");
$this->db->escape_like_str($query);
$res = $this->db->get('film');
Si je supprime le caractère générique (%), la recherche fonctionne correctement. $ Query est également une chaîne avec une entrée utilisateur. Toute aide est appréciée.
$this->db->like()
ajoute automatiquement le% s et échappe à la chaîne. Tout ce dont vous avez besoin est
$this->db->like('title', $query);
$res = $this->db->get('film');
Voir Classe d'enregistrement actif (CI 2) ou Classe Query Builder (CI 3) dans les documents de CI pour référence.
$this->db->like('title', 'match', 'before');
// Produces: WHERE title LIKE '%match'
$this->db->like('title', 'match', 'after');
// Produces: WHERE title LIKE 'match%'
$this->db->like('title', 'match', 'both');
// Produces: WHERE title LIKE '%match%'
Fur Full comme vous pouvez utiliser:
$this->db->like('title',$query);
Pour la requête% $, vous pouvez utiliser
$this->db->like('title', $query, 'before');
et pour $ query%, vous pouvez utiliser
$this->db->like('title', $query, 'after');
Si vous ne souhaitez pas utiliser le caractère générique (%), vous pouvez passer au troisième argument facultatif l'option "aucun".
$this->db->like('title', 'match', 'none');
// Produces: WHERE title LIKE 'match'
J'utilise
$this->db->query("SELECT * FROM film WHERE film.title LIKE '%$query%'"); for such purposes