codeigniter 【複数のカラムに対してLIKE】 - PHPプロ!Q&A掲示板

4935

  • 0P

codeigniter 【複数のカラムに対してLIKE】

質問日時 / 2018年3月30日 00:13    回答数 / 2件

Questioner:  takada  このエントリーをはてなブックマークに追加 

キーワード / codeigniter    LIKE    検索   

お世話になります。 

サイト内で、DBからマッチしたワードを取り出す検索システムをつくったのですが
検索対象となるカラムを複数にすることはできるのでしょうか?

こちらだと
http://codeigniter.jp/user_guide/3/database/query_builder.html

複数回このメソッドを呼ぶと、それらは AND で 連結されます:

 $this->db->like('title', 'match');
 $this->db->like('body', 'match');
 // WHERE `title` LIKE '%match%' ESCAPE '!' AND `body` LIKE '%match% ESCAPE '!'

このように書いてあるのですが、うまくいきません。

▼現在きちんと動作しているmodel(カウント用とページネーション用二つあります。)
検索ボックスに入力したものが $searchword となります。
memberテーブルの、nameカラムの中に入ってる文字と一致したら出力、ちゃんと検索して表示されます。

public function sagasu($searchword)
 {
 $this->db->like('name', $searchword);
 $query = $this->db->get('member');
 return $query->result_array();
 }

 public function sagasu2($searchword,$seg)
 {
 $this->db->like('name', $searchword);
 $this->db->limit(5,$seg);
 $query = $this->db->get('member');
 return $query->result_array();
 }

そして、検索対象を複数のカラムにしたいのです。
 以下、検索ボックスに入れたワードを
nameカラムだけでなくaddressカラムにもあった場合 つまり
nameカラム もしくは addressカラム どちらかにあった場合にヒットさせようとして以下のようにすると、ワードが入っているのに全くヒットしなくなってしまいます。

public function sagasu($searchword)
 {
 $this->db->like('name', $searchword);
 $this->db->like('address', $searchword);
 $query = $this->db->get('member');
 return $query->result_array();
 }

 public function sagasu2($searchword,$seg)
 {
 $this->db->like('name', $searchword);
 $this->db->like('address', $searchword);
 $this->db->limit(5,$seg);
 $query = $this->db->get('member');
 return $query->result_array();
 }

 ↑これは、どこがいけないのでしょうか?

やり方としましては、webのフォームから、DBに登録したり編集するときに
nameplusaddress みたいなカラムを用意しておいて
 そこに両方の内容を入れて、検索時に

$this->db->like('nameplusaddress', $searchword);
 $query = $this->db->get('member');
 return $query->result_array();

こうすればできるのですが
 なるべくDBの内容は減らしたいので…

こちらを使わずに解決する方法はありませんでしょうか?
よろしくお願いいたします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix相互リンク https://detail.chiebukuro.yahoo.co.j
 ┗A01-1takada知恵袋のリンクにあるように、解決していただきました

回答一覧

並び替え:

A01
answerershimix [3月30日 07:59]

相互リンク

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14188284349

この意見に回答する

ツリーへ TOPへ

A01-1
replyertakada [4月2日 14:47]

知恵袋のリンクにあるように、解決していただきました!
ありがとうございます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報