CodeIgniterのQuery Builder(クエリビルダー)完全攻略!データベース操作を優しく解説
生徒
「CodeIgniterでデータベースのデータを表示したり保存したりしたいんですけど、難しそうで不安です…。」
先生
「大丈夫ですよ。CodeIgniterには『Query Builder(クエリビルダー)』という、初心者でも直感的にデータを扱える便利な仕組みがあるんです。」
生徒
「クエリビルダー?それはどうやって使うんですか?」
先生
「専門的な難しい言葉を使わずに、パズルのように組み立てる方法を一つずつ教えていきますね!」
1. Query Builder(クエリビルダー)とは何のこと?
Webアプリケーションを作るとき、ユーザーの名前やブログの投稿内容などを保存しておく「データベース」という大きな倉庫のようなものを使います。通常、この倉庫からデータを取り出したり、新しく入れたりするには「SQL(エスキューエル)」という特別なコンピュータ言語を書く必要があります。
しかし、プログラミングを始めたばかりの人にとって、SQLを完璧に覚えるのは少し大変です。そこで登場するのがQuery Builder(クエリビルダー)です。これは、複雑なSQLの代わりに、PHPの簡単な命令を組み合わせるだけでデータベースを操作できる「翻訳機」のような役割を果たしてくれます。
例えば、「ユーザーの一覧を持ってきて!」という命令も、クエリビルダーを使えば英語の文章を書くような感覚で記述できます。また、セキュリティ面でも「SQLインジェクション」という悪い攻撃からデータを守ってくれる仕組みが自動で働くため、初心者が安全にプログラムを作るための強力な味方になります。
2. データベース操作の基本「CRUD」を覚えよう
プログラミングの世界では、データベース操作の基本を「CRUD(クラッド)」と呼びます。これは、以下の4つの動きの頭文字を取ったものです。
- Create(作成):新しいデータを保存する(例:会員登録)
- Read(読み取り):保存されているデータを表示する(例:記事一覧を表示)
- Update(更新):既にあるデータを書き換える(例:プロフィールの変更)
- Delete(削除):不要になったデータを消す(例:退会処理)
CodeIgniterのクエリビルダーを使えば、これら全ての操作をたった数行のコードで実現できます。パソコンの操作に慣れていない方でも、まずは「読み取り」から順番に練習していけば、すぐに自由自在にデータを操れるようになりますよ。
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句)
全てのデータではなく、「特定の誰か」や「特定の条件に合うもの」だけを探したい場合もありますよね。例えば「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)
次に、新しい情報をデータベースに保存する方法を学びましょう。これはお問い合わせフォームの送信や、ブログの新規投稿などで使われます。データを「連想配列(れんそうはいれつ)」という形式で準備するのがコツです。
// 保存したいデータを準備する
$data = array(
'title' => '初めてのブログ投稿',
'content' => '今日はCodeIgniterの勉強をしました!',
'author' => 'プログラミング初心者'
);
// 「posts」というテーブルにデータを流し込む
$this->db->insert('posts', $data);
echo '無事に投稿が完了しました!';
insert(インサート)は「差し込む」という意味です。箱(テーブル)の中に、準備した手紙(データ)を入れるイメージですね。これだけで、データベースに新しい1行が追加されます。難しい設定は必要ありません。
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. クエリビルダーを使うメリット
なぜ直接SQLを書かずにクエリビルダーを使うのか、その理由は「コードの読みやすさ」と「安全性」にあります。プログラミングのコードは、後から自分や他の人が見返したときに、何をしているかすぐに理解できることがとても大切です。クエリビルダーの命令は get や insert など、動作がそのまま名前になっているので、まるで英語のノートを読んでいるかのように内容を把握できます。
また、パソコンの操作に不慣れなうちは、ついついセキュリティ対策を忘れがちですが、CodeIgniterが裏側で「危ない文字」を自動的にチェックして無害化してくれます。これにより、ハッカーなどの攻撃から大切なデータを守ることができるのです。初心者こそ、この安全なレールの上を走ることで、挫折せずに学習を進めることができます。
8. モデル(Model)の中での書き方
CodeIgniterでは、これらのデータベース操作を「モデル」という専用のファイルの中に書くのがルールです。モデルは、いわば「データ管理の専門家」です。コントローラーが「料理を出すウェイター」、ビューが「盛り付けられたお皿」だとしたら、モデルは「食材を管理する倉庫番」のような役割です。
モデルの中にクエリビルダーの処理をまとめておくことで、プログラム全体がスッキリと整理されます。例えば、「ユーザー情報を取得する」という処理を一度モデルに書いておけば、色々なページでその機能を使い回すことができます。このように、役割を分担させることで、大規模なシステムも効率よく作れるようになるのです。