カテゴリ: CodeIgniter 更新日: 2026/01/29

CodeIgniterのQuery Builder(クエリビルダー)完全攻略!データベース操作を優しく解説

CodeIgniterのQuery Builderとは?基本構文と使い方
CodeIgniterのQuery Builderとは?基本構文と使い方

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

生徒

「CodeIgniterでデータベースのデータを表示したり保存したりしたいんですけど、難しそうで不安です…。」

先生

「大丈夫ですよ。CodeIgniterには『Query Builder(クエリビルダー)』という、初心者でも直感的にデータを扱える便利な仕組みがあるんです。」

生徒

「クエリビルダー?それはどうやって使うんですか?」

先生

「専門的な難しい言葉を使わずに、パズルのように組み立てる方法を一つずつ教えていきますね!」

1. Query Builder(クエリビルダー)とは何のこと?

1. Query Builder(クエリビルダー)とは何のこと?
1. Query Builder(クエリビルダー)とは何のこと?

Webアプリケーションを作るとき、ユーザーの名前やブログの投稿内容などを保存しておく「データベース」という大きな倉庫のようなものを使います。通常、この倉庫からデータを取り出したり、新しく入れたりするには「SQL(エスキューエル)」という特別なコンピュータ言語を書く必要があります。

しかし、プログラミングを始めたばかりの人にとって、SQLを完璧に覚えるのは少し大変です。そこで登場するのがQuery Builder(クエリビルダー)です。これは、複雑なSQLの代わりに、PHPの簡単な命令を組み合わせるだけでデータベースを操作できる「翻訳機」のような役割を果たしてくれます。

例えば、「ユーザーの一覧を持ってきて!」という命令も、クエリビルダーを使えば英語の文章を書くような感覚で記述できます。また、セキュリティ面でも「SQLインジェクション」という悪い攻撃からデータを守ってくれる仕組みが自動で働くため、初心者が安全にプログラムを作るための強力な味方になります。

2. データベース操作の基本「CRUD」を覚えよう

2. データベース操作の基本「CRUD」を覚えよう
2. データベース操作の基本「CRUD」を覚えよう

プログラミングの世界では、データベース操作の基本を「CRUD(クラッド)」と呼びます。これは、以下の4つの動きの頭文字を取ったものです。

  • Create(作成):新しいデータを保存する(例:会員登録)
  • Read(読み取り):保存されているデータを表示する(例:記事一覧を表示)
  • Update(更新):既にあるデータを書き換える(例:プロフィールの変更)
  • Delete(削除):不要になったデータを消す(例:退会処理)

CodeIgniterのクエリビルダーを使えば、これら全ての操作をたった数行のコードで実現できます。パソコンの操作に慣れていない方でも、まずは「読み取り」から順番に練習していけば、すぐに自由自在にデータを操れるようになりますよ。

3. データを取得する(Read)の基本構文

3. データを取得する(Read)の基本構文
3. データを取得する(Read)の基本構文

まずは、一番よく使う「データを取り出す」方法を見てみましょう。テーブルという「表」の中から全てのデータを取ってくるプログラムです。ここでは「users」という名前の表からデータを持ってくる例を紹介します。


// 「users」テーブルのデータをすべて取得する準備
$query = $this->db->get('users');

// 取得した結果を「配列」というデータの束として受け取る
$result = $query->result();

// 画面に表示してみる
foreach ($result as $row) {
    echo $row->name;
}

このコードの $this->db->get('users') という部分がクエリビルダーの魔法です。「データベースさん、usersテーブルを持ってきて(getして)ください」とお願いしているイメージですね。取得したデータは foreach という命令を使って、一人分ずつ順番に画面に表示させています。

4. 条件を絞ってデータを探す(Where句)

4. 条件を絞ってデータを探す(Where句)
4. 条件を絞ってデータを探す(Where句)

全てのデータではなく、「特定の誰か」や「特定の条件に合うもの」だけを探したい場合もありますよね。例えば「IDが5番のユーザーだけを表示したい」という時は、where という命令を使います。


// IDが5番のユーザーを指定する
$this->db->where('id', 5);

// その条件でusersテーブルからデータを取得する
$query = $this->db->get('users');

// 1件だけデータを取り出す
$user = $query->row();

echo $user->name . 'さんの情報を表示しています。';

where は「~のとき」という意味です。このコードは「idが5のときのデータを取ってきて」という命令になります。複数の条件を組み合わせることもできるので、「名前が『田中』で、かつ年齢が『20歳』の人」といった細かい検索も簡単に作ることが可能です。

5. 新しいデータを追加する(Create)

5. 新しいデータを追加する(Create)
5. 新しいデータを追加する(Create)

次に、新しい情報をデータベースに保存する方法を学びましょう。これはお問い合わせフォームの送信や、ブログの新規投稿などで使われます。データを「連想配列(れんそうはいれつ)」という形式で準備するのがコツです。


// 保存したいデータを準備する
$data = array(
    'title'   => '初めてのブログ投稿',
    'content' => '今日はCodeIgniterの勉強をしました!',
    'author'  => 'プログラミング初心者'
);

// 「posts」というテーブルにデータを流し込む
$this->db->insert('posts', $data);

echo '無事に投稿が完了しました!';

insert(インサート)は「差し込む」という意味です。箱(テーブル)の中に、準備した手紙(データ)を入れるイメージですね。これだけで、データベースに新しい1行が追加されます。難しい設定は必要ありません。

6. データを更新・削除する方法(Update / Delete)

6. データを更新・削除する方法(Update / Delete)
6. データを更新・削除する方法(Update / Delete)

最後に、データの書き換えと削除について解説します。これらは「どのデータを対象にするか」をしっかり指定しないと、全てのデータが書き換わったり消えたりしてしまうので注意が必要です。必ず where とセットで使いましょう。


// --- データの更新(Update) ---
$update_data = array(
    'email' => 'new-address@example.com'
);

// IDが10番の人だけを更新対象にする
$this->db->where('id', 10);
$this->db->update('users', $update_data);


// --- データの削除(Delete) ---
// IDが15番の人を削除する
$this->db->where('id', 15);
$this->db->delete('users');

更新は update、削除は delete という単語を使います。どちらも where で対象をピンポイントに指定しているのがわかりますね。もし where を書き忘れて実行してしまうと、データベース内の全員のメールアドレスが変わってしまったり、全員のデータが消えてしまったりという大惨事になるので、ここだけは慎重に操作しましょう。

7. クエリビルダーを使うメリット

7. クエリビルダーを使うメリット
7. クエリビルダーを使うメリット

なぜ直接SQLを書かずにクエリビルダーを使うのか、その理由は「コードの読みやすさ」と「安全性」にあります。プログラミングのコードは、後から自分や他の人が見返したときに、何をしているかすぐに理解できることがとても大切です。クエリビルダーの命令は getinsert など、動作がそのまま名前になっているので、まるで英語のノートを読んでいるかのように内容を把握できます。

また、パソコンの操作に不慣れなうちは、ついついセキュリティ対策を忘れがちですが、CodeIgniterが裏側で「危ない文字」を自動的にチェックして無害化してくれます。これにより、ハッカーなどの攻撃から大切なデータを守ることができるのです。初心者こそ、この安全なレールの上を走ることで、挫折せずに学習を進めることができます。

8. モデル(Model)の中での書き方

8. モデル(Model)の中での書き方
8. モデル(Model)の中での書き方

CodeIgniterでは、これらのデータベース操作を「モデル」という専用のファイルの中に書くのがルールです。モデルは、いわば「データ管理の専門家」です。コントローラーが「料理を出すウェイター」、ビューが「盛り付けられたお皿」だとしたら、モデルは「食材を管理する倉庫番」のような役割です。

モデルの中にクエリビルダーの処理をまとめておくことで、プログラム全体がスッキリと整理されます。例えば、「ユーザー情報を取得する」という処理を一度モデルに書いておけば、色々なページでその機能を使い回すことができます。このように、役割を分担させることで、大規模なシステムも効率よく作れるようになるのです。

カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.2
Java&Spring記事人気No2
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.3
Java&Spring記事人気No3
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.4
Java&Spring記事人気No4
Laravel
Laravelのresponse()関数の使い方を完全ガイド!初心者でもわかるレスポンス制御とHTTPレスポンスの基本
No.5
Java&Spring記事人気No5
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.6
Java&Spring記事人気No6
Laravel
LaravelでRemember Me(ログイン状態保持)機能を実装する方法を完全解説!初心者でも安心の認証入門
No.7
Java&Spring記事人気No7
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法
No.8
Java&Spring記事人気No8
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点