カテゴリ: CodeIgniter 更新日: 2026/07/05

CodeIgniterで複数条件検索をマスター!AND・OR検索の初心者向け完全ガイド

CodeIgniterで複数条件検索を行う方法(AND・OR)
CodeIgniterで複数条件検索を行う方法(AND・OR)

先生と生徒の会話形式で理解しよう

生徒

「CodeIgniterで、例えば『名前が"田中"で、かつ20歳以上の人』みたいに複数の条件でデータを検索したいときはどうすればいいですか?」

先生

「それは『複数条件検索』ですね。CodeIgniterのモデル機能を使えば、とてもシンプルに書くことができますよ。」

生徒

「条件が1つじゃないと難しそうですが、初心者でも書けますか?」

先生

「大丈夫です!『AND(かつ)』と『OR(または)』の考え方さえ覚えれば、パズルを組み合わせるように簡単に作れます。一緒に見ていきましょう!」

1. 複数条件検索とは?データベースの基本を学ぼう

1. 複数条件検索とは?データベースの基本を学ぼう
1. 複数条件検索とは?データベースの基本を学ぼう

プログラミングの世界で「検索」とは、膨大なデータが保存されているデータベースという「情報の倉庫」から、自分が必要なものだけを取り出す作業のことを指します。CodeIgniter(コードイグナイター)というPHPのフレームワークを使えば、この検索作業が驚くほど簡単になります。

通常、1つの条件(例:会員IDが1番の人)を探すのは簡単ですが、実際のアプリ開発では「東京に住んでいて、かつ30代の女性」といった複数の条件を組み合わせて検索することがほとんどです。これを複数条件検索と呼びます。

この検索には大きく分けて2つのルールがあります。それが「AND(アンド)」と「OR(オア)」です。この2つを使い分けることで、Google検索のように高度な絞り込み機能をあなたのWebサイトに実装できるようになります。

2. 「AND検索」の仕組みと書き方

2. 「AND検索」の仕組みと書き方
2. 「AND検索」の仕組みと書き方

AND(アンド)検索とは、日本語で言うと「かつ」や「および」にあたります。指定したすべての条件を満たしているデータだけを探し出します。例えば「野菜」で、かつ「赤いもの」という2つの条件があれば、トマトはヒットしますが、キャベツ(赤い条件に合わない)やイチゴ(野菜ではない)は除外されます。

CodeIgniterのモデル内でAND検索を行うには、where()メソッドを続けて書くだけで自動的にANDとして処理されます。まずは最も基本的な書き方を見てみましょう。

サンプルコード:AND検索(名前と年齢の両方に一致)


// 名前が「田中」で、かつ年齢が「25歳」の人を探す
$this->db->where('name', '田中');
$this->db->where('age', 25);
$query = $this->db->get('users');
// SELECT * FROM users WHERE name = '田中' AND age = 25; と同じ意味になります

このように、where()を並べるだけで、プログラムが自動的に「どちらも満たすもの」を探してくれます。非常に直感的で分かりやすいですね。

3. 「OR検索」で選択肢を広げよう

3. 「OR検索」で選択肢を広げよう
3. 「OR検索」で選択肢を広げよう

次に、OR(オア)検索について解説します。これは日本語で「または」という意味です。複数の条件のうち、どれか1つでも当てはまればOKという、少し「ゆるい」検索方法です。例えば「おやつは、ケーキまたはプリンがいい」と言った場合、どちらか片方があれば満足ですよね。それと同じ仕組みです。

CodeIgniterでOR検索を使いたいときは、or_where()という専用の命令を使います。これを使うことで、条件の間に「OR」という言葉が挟まり、幅広くデータを見つけることができるようになります。

サンプルコード:OR検索(どちらかの役職に一致)


// 役職が「部長」または「課長」の人をすべて取得する
$this->db->where('position', '部長');
$this->db->or_where('position', '課長');
$query = $this->db->get('staffs');
// SELECT * FROM staffs WHERE position = '部長' OR position = '課長'; という意味です

このコードを実行すると、部長さんも課長さんも両方がリストアップされます。もし普通のwhere()を2回書いてしまうと、「部長であり、かつ課長である人」という矛盾した検索になってしまい、誰も見つからなくなるので注意が必要です。

4. 配列を使ってスマートに条件を書く方法

4. 配列を使ってスマートに条件を書く方法
4. 配列を使ってスマートに条件を書く方法

条件がたくさんある場合、1行ずつwhere()を書くのは大変ですよね。パソコンの操作に慣れていない方でも、リストを作るような感覚で条件をまとめる方法があります。それが配列(はいれつ)を使った書き方です。

配列とは、複数のデータを1つの箱にまとめて入れる仕組みのことです。CodeIgniterでは、この配列をwhere()の中にポイッと入れるだけで、一気に複数のAND条件を指定することができます。

サンプルコード:配列を使った一括指定


// 複数の条件を「箱(配列)」に詰める
$search_conditions = array(
    'status' => 'active', // 状態が「有効」
    'category' => 'books', // カテゴリが「本」
    'price <' => 1000      // 価格が「1000円未満」
);

$this->db->where($search_conditions);
$query = $this->db->get('products');

実行結果は以下のようになります(概念的なイメージです)。


有効な状態で、カテゴリが本で、さらに1000円より安い商品だけが表示されます。

この書き方をすると、コードがスッキリして読みやすくなります。プログラミングでは「読みやすさ」も非常に大切なポイントです。

5. 比較演算子で「〜以上」「〜以下」を表現する

5. 比較演算子で「〜以上」「〜以下」を表現する
5. 比較演算子で「〜以上」「〜以下」を表現する

ここまでは「完全に一致するもの」を探してきましたが、現実には「2000円以上の商品」や「昨日より前に登録されたユーザー」など、範囲を指定したい場面が多いですよね。ここで登場するのが比較演算子(ひかくえんざんし)という記号です。

算数で習った「>(大なり)」や「<(小なり)」を使います。CodeIgniterでは、項目名の後ろに半角スペースを空けて、これらの記号を書くルールになっています。

サンプルコード:数値の範囲で検索


// 18歳以上、かつ65歳以下のユーザーを検索
$this->db->where('age >=', 18);
$this->db->where('age <=', 65);
$query = $this->db->get('members');

記号の意味は以下の通りです:

  • >= :〜以上(その数字を含む)
  • <= :〜以下(その数字を含む)
  • > :〜より大きい(その数字は含まない)
  • < :〜より小さい(その数字は含まない)
  • != :〜ではない(一致しないものを探す)
これらを組み合わせることで、より詳細な絞り込みが可能になります。

6. あいまい検索「LIKE」と複数条件の組み合わせ

6. あいまい検索「LIKE」と複数条件の組み合わせ
6. あいまい検索「LIKE」と複数条件の組み合わせ

「名前の一部だけ覚えている」「特定のキーワードが含まれる記事を探したい」という時に使うのがLIKE(ライク)検索です。これは「〜のようなもの」という意味で、日本語では「あいまい検索」とも呼ばれます。

CodeIgniterではlike()メソッドを使います。これもAND条件と同じように、他のwhere()と組み合わせて使うことができます。例えば「カテゴリが『料理』で、タイトルに『カレー』が含まれるもの」といった具合です。

サンプルコード:キーワード検索との組み合わせ


// カテゴリが「ブログ」で、かつ本文に「初心者」という言葉が含まれる
$this->db->where('category_name', 'blog');
$this->db->like('content', '初心者');
$query = $this->db->get('articles');

このように、完全一致のwhereと、あいまい一致のlikeを混ぜて使うことで、非常に便利な検索機能が作れます。Google検索のようなシステムも、基本はこうした命令の積み重ねでできているのです。

7. 初心者が間違えやすい注意点とコツ

7. 初心者が間違えやすい注意点とコツ
7. 初心者が間違えやすい注意点とコツ

複数条件検索を作るときに、初心者が最初につまずきやすいポイントがいくつかあります。まず1つ目は「全角と半角の違い」です。プログラムの世界では、英数字や記号は必ず「半角」で書かなければなりません。例えば、wherewhereと全角で書いてしまうと、パソコンは「何のこと?」と混乱して動かなくなってしまいます。

2つ目は、「条件を書く順番」です。基本的には上から順番に条件が適用されていきます。特にANDとORを複雑に混ぜる場合は、順番によって検索結果が変わってしまうことがあります。最初は「まずはANDだけで練習する」「次にORだけで練習する」と、1つずつステップアップしていくのが上達の近道です。

最後に、データベース操作は「失敗してもパソコンが壊れることはない」ので、どんどん試してみることが大切です。CodeIgniterはエラーメッセージも親切なので、どこが間違っているか教えてくれます。恐れずにコードを書いて、自分だけの便利な検索機能を作ってみましょう!

まとめ

まとめ
まとめ

ここまで、CodeIgniter(コードイグナイター)を利用した複数条件検索の基本から応用までを詳しく解説してきました。Webアプリケーションにおいて「検索機能」はユーザーが情報を探すための心臓部とも言える重要なパーツです。最初は1つの条件を指定するだけでも大変に感じるかもしれませんが、CodeIgniterのメソッドを使えば、PHPの基礎知識があるだけで驚くほど直感的にクエリを組み立てることができます。

複数条件検索のポイントをおさらい

検索条件を組み合わせる際の要点は、「AND(かつ)」で絞り込むのか、それとも「OR(または)」で範囲を広げるのかを明確にすることです。CodeIgniterでは、$this->db->where()を複数回記述することで自動的にAND接続され、$this->db->or_where()を使うことで条件の幅を広げることができました。

また、開発の現場で非常によく使われる「比較演算子」や「配列による一括指定」もマスターしておくと、コードの可読性(読みやすさ)が格段に向上します。例えば、ECサイトの価格検索や、会員システムの年齢制限など、実務で役立つシーンは数え切れません。

実践的な複数条件検索のサンプルプログラム

最後により実用的な例として、「特定のカテゴリに属し、かつ在庫があり、特定の価格帯に含まれる商品」を検索するコードを書いてみましょう。このように複数のメソッドを組み合わせることで、複雑な条件もスッキリと表現できます。


// 検索条件を整理して指定する
$category = '家電';
$min_price = 5000;
$max_price = 50000;

// クエリの組み立て開始
$this->db->where('category_name', $category); // カテゴリ指定
$this->db->where('stock >', 0);               // 在庫が1つ以上ある
$this->db->where('price >=', $min_price);    // 最低価格以上
$this->db->where('price <=', $max_price);    // 最高価格以下

// データの取得
$query = $this->db->get('products');
$results = $query->result();

このコードを実行すると、データベース内部では以下のような検索が行われます。


「家電」という名前のカテゴリの中で、在庫が0より多く、かつ価格が5000円から50000円までの間の商品だけが抽出されます。

さらなるステップアップのために

基本的な検索ができるようになったら、次は「ソート(並び替え)」や「ページネーション(ページ割り)」との組み合わせにも挑戦してみてください。CodeIgniterには、検索結果を「価格が安い順」に並べたり、10件ずつ表示したりする機能も備わっています。これらを組み合わせることで、プロ仕様の本格的な検索システムへと進化させることができます。

大切なのは、いきなり複雑なことをしようとせず、まずはシンプルなwhere()から1つずつ条件を足していくことです。エラーが出てもそれは成長のチャンス。プログラムは書いた通りにしか動きませんから、一つ一つのメソッドがどのような役割を果たしているのかを意識しながら、楽しく開発を続けていきましょう!

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!AND検索とOR検索の違いがすごくスッキリ分かりました。where()を並べるだけで自動的に『かつ』になるのは便利ですね。」

先生

「その通りです!CodeIgniterが裏側でSQLという難しい言葉に翻訳してくれているんですよ。配列を使って条件をまとめる書き方は試してみましたか?」

生徒

「はい!さっそく試してみました。1行ずつ書くよりも、後から見返した時にどんな条件で探しているのかがパッと見て分かっていいなと思いました。でも、or_where()を使うときは少し注意が必要そうですね。」

先生

「鋭いですね。条件が複雑になると、どこにORを挟むかで結果がガラッと変わることがあります。慣れるまでは、自分が作りたい検索条件を一度メモ帳なんかに日本語で書き出してみると、コードに落とし込みやすくなりますよ。」

生徒

「なるほど!『20歳以上、かつ、東京か大阪に住んでいる人』みたいに整理してから書けばいいんですね。比較演算子の記号も、算数の授業を思い出して頑張って覚えます!」

先生

「その意気です。>=<= の向きを間違えると、全く逆の結果になってしまうので、そこだけは慎重に確認しましょう。次は、検索結果を並び替える方法についても勉強してみましょうか。」

生徒

「ぜひお願いします!もっと使いやすい検索画面を作れるようになりたいです!」

カテゴリの一覧へ
新着記事
New1
PHP
PHPで日本語の曜日を表示する方法を解説!配列を使った曜日変換の定番コード
New2
Symfony
Symfonyでバリデーションエラーを表示する方法!初心者でもわかるテンプレート活用術
New3
Laravel
Laravelのマイグレーションエラーの原因と解決方法を完全ガイド
New4
Laravel
Laravelのrefreshとfreshの違いを初心者でもわかる解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravel通知機能の決定版!特定のユーザーにのみ通知を送る認可制御を初心者向けに徹底解説
No.3
Java&Spring記事人気No3
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.4
Java&Spring記事人気No4
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのエラー画面をカスタマイズする方法!errors/xxx.blade.phpの使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterコントローラでログを出力する方法完全ガイド!初心者でもわかるエラー記録とデバッグ