Codeigniterに単純なデータベースクエリがありますが、ワイルドカードを使用して検索することはできません。これは私のコードです:
$this->db->like('film.title',"%$query%");
$this->db->escape_like_str($query);
$res = $this->db->get('film');
ワイルドカード(%)を削除すると、検索は正常に機能します。また、$ queryはユーザー入力を持つ単なる文字列です。どんな助けも大歓迎です。
$this->db->like()
は、%sを自動的に追加し、文字列をエスケープします。必要なのは
$this->db->like('title', $query);
$res = $this->db->get('film');
参考として、CIのドキュメントの Active Record Class(CI 2) または Query Builder Class(CI 3) を参照してください。
$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%'
あなたができるように毛皮フル:
$this->db->like('title',$query);
%$ queryには次を使用できます
$this->db->like('title', $query, 'before');
そして、$ query%に使用できます
$this->db->like('title', $query, 'after');
ワイルドカード(%)を使用したくない場合は、オプションの3番目の引数にオプション 'none'を渡すことができます。
$this->db->like('title', 'match', 'none');
// Produces: WHERE title LIKE 'match'
私は使っています
$this->db->query("SELECT * FROM film WHERE film.title LIKE '%$query%'"); for such purposes