カテゴリ: CodeIgniter 更新日: 2026/02/20

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はエラーメッセージも親切なので、どこが間違っているか教えてくれます。恐れずにコードを書いて、自分だけの便利な検索機能を作ってみましょう!

カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方