CodeIgniterでデータベース接続設定を初心者向けに徹底解説!PHP開発の第一歩
生徒
「CodeIgniter(コードイグナイター)というのを使ってWebサイトを作りたいのですが、データを保存するためのデータベースに繋ぐ方法が分かりません……。」
先生
「大丈夫ですよ。CodeIgniterは、設定ファイルを少し書き換えるだけで、とても簡単にデータベースと接続できる仕組みを持っているんです。」
生徒
「パソコンをあまり触ったことがない僕でも、ファイルを編集するだけで繋げられるようになりますか?」
先生
「もちろんです!まずは基本となる接続情報の書き方から、一つずつ丁寧に解説していきますね。準備はいいですか?」
1. データベース接続とは何か?をイメージで理解しよう
プログラミングの世界でいう「データベース接続」とは、簡単に言うと「アプリから倉庫に鍵を開けて入るための許可を得ること」です。PHPで作ったプログラムが「店員さん」だとすると、データベースは「商品を保管している倉庫」のような役割を果たします。店員さんが商品を取り出したり、新しく棚に並べたりするためには、まず倉庫のドアを開けなければなりません。このドアを開けるための情報を設定するのが、今回のメインテーマであるデータベース設定です。
初心者のうちは「接続」と聞くと何か難しい配線のようなものを想像するかもしれませんが、実際には設定用のテキストファイルに「倉庫の場所(ホスト名)」「倉庫に入る人の名前(ユーザー名)」「合言葉(パスワード)」を書き込むだけの作業です。これが正しく設定できて初めて、CodeIgniterはデータを自由に扱えるようになります。Web開発においてデータベースは、ユーザー情報やブログの記事、商品の注文履歴などを保存するために欠かせない存在です。この設定をマスターすることは、エンジニアとしての大きな一歩になります。
2. CodeIgniterの設定ファイル「database.php」を見つけよう
CodeIgniterでデータベースの設定を行うには、特定のファイルを開く必要があります。まずは、自分のパソコンやサーバーにあるプロジェクトフォルダの中を探してみましょう。多くのPHPフレームワークと同様に、CodeIgniterも整理整頓されたフォルダ構造を持っています。
設定ファイルは、通常 app/Config/Database.php という場所にあります(CodeIgniter 4の場合)。このファイルが、いわば「接続情報の台帳」です。このファイルを開くと、たくさんの英語や記号が並んでいて驚くかもしれませんが、私たちが編集すべき場所はほんの一部だけです。ファイルを編集する際は、メモ帳などのテキストエディタを使って中身を書き換えていきます。誤って他の場所を消してしまうとプログラムが動かなくなることもあるので、慎重に作業を進めましょう。
設定ファイルの中には $default という名前のグループが用意されています。これは「標準的な接続先」という意味です。複数のデータベースを使い分けることもできますが、まずはこのデフォルトの設定を完成させることを目標にしましょう。ここに必要な情報を書き込むだけで、システム全体がデータベースを使える状態になります。
3. 接続に必要な「4つの重要キーワード」を覚えよう
データベースに接続するためには、必ず用意しなければならない情報が4つあります。これらはインターネット上の住所や合言葉のようなものです。まずは、それぞれの言葉の意味を優しく解説します。
- hostname(ホスト名): データベースがどこにあるかを示す住所です。自分のパソコンで練習している場合は
localhostと書くことが一般的です。 - username(ユーザー名): データベースにアクセスする人の名前です。開発環境ではよく
rootという名前が使われます。 - password(パスワード): データベースを開くための合言葉です。自分で設定した秘密のパスワードを入力します。
- database(データベース名): たくさんある倉庫の中で、どの倉庫を使うかという名前です。事前に作成しておいた名前を指定します。
これらの情報が一つでも間違っていると、エラーが出てデータベースに繋げることができません。大文字と小文字の違いや、半角と全角の間違いにも注意が必要です。特に、全角でスペースが入ってしまったりすると、見た目では分かりにくいバグ(プログラムのミス)の原因になります。基本的にはすべて半角英数字で入力することを心がけてください。パソコン操作に慣れていない方は、まず自分のキーボードが「半角入力」になっているかを確認する癖をつけると良いでしょう。
4. 実際に設定を書いてみよう(基本コード例)
それでは、具体的な書き方を見ていきましょう。以下は Database.php ファイルの中にある $default の設定部分を書き換える例です。自分の環境に合わせて値を変更してください。
public array $default = [
'DSN' => '',
'hostname' => 'localhost', // データベースの場所(住所)
'username' => 'my_user', // 接続するためのユーザー名
'password' => 'secret123', // 秘密のパスワード
'database' => 'my_blog_db', // 使用するデータベースの名前
'DBDriver' => 'MySQLi', // データベースの種類(通常はMySQLi)
'pConnect' => false,
'DBDebug' => true,
];
このように、決められた項目の右側に、クォーテーション(' ')で囲って文字を入力していきます。例えば、データベースの名前が「my_blog_db」なら、'database' => 'my_blog_db', と書きます。最後のカンマ(,)を忘れないようにしましょう。これは「設定がまだ続くよ」という区切りを意味しています。プログラムの世界では、こうした小さな記号一つで動作が変わってしまうため、お手本をよく見ながら正確に入力することが大切です。最初は緊張するかもしれませんが、慣れてしまえば「いつもの作業」になります。
5. データベースに正しく繋がったか確認する方法
設定を書き終えたら、次は「本当に繋がっているか」を確認してみましょう。正しく繋がっていないと、この先の開発が進まないからです。CodeIgniterでは、コントローラーという場所で接続テストを行うことができます。もし接続に失敗している場合は、真っ白な画面になったり、英語のエラーメッセージが表示されたりします。
確認用の簡単なプログラムを書いて、画面にメッセージが出るかテストしてみます。データベースへの接続を試み、成功したときだけ「接続成功!」と表示させるようにします。このように、一つひとつの作業が終わるたびに「ちゃんと動いているかな?」と確認することをテストと呼びます。初心者の方は、一気に最後まで作ろうとせず、小まめに確認を挟むのが上達の近道です。もしエラーが出たとしても、それは「設定がどこか間違っているよ」と教えてくれている親切なメッセージなので、怖がらずに読み解いていきましょう。
// 接続を確認するための簡単なコード例
$db = \Config\Database::connect();
if ($db->connect()) {
echo 'おめでとうございます!データベースへの接続に成功しました!';
} else {
echo '残念ながら接続できませんでした。設定を見直してください。';
}
上記のコードを実行して「おめでとうございます!」という文字が画面に出れば、あなたのパソコンとデータベースの道がしっかりと繋がった証拠です。これで、データを保存したり、読み込んだりする準備が整いました。もしエラーが出た場合は、先ほどの hostname や password に打ち間違いがないか、もう一度ゆっくり確認してみましょう。特にパスワードのスペルミスは非常に多い間違いの一つです。
6. モデル(Model)を使ってデータを取得してみよう
データベースとの接続ができたら、次は「モデル」という仕組みを使ってデータを取り出してみましょう。CodeIgniterではモデルがデータベースとのやり取りを専門に担当する役割を持っています。直接データベースを操作するのではなく、モデルという「仲介役」にお願いすることで、コードが読みやすくなり、管理もしやすくなります。
例えば、ブログの記事一覧をデータベースから取ってきたい場合、モデルに「記事を全部ください」と命令を出します。すると、モデルが自動的にデータベースと通信し、必要な情報を揃えて戻ってきてくれます。プログラミング未経験の方は、モデルを「優秀な図書館の司書さん」だと想像してください。あなたが「あの本を探して」と頼むと、司書さんが本棚(データベース)から目的の本を探し出してきてくれる、そんなイメージです。
// モデルを使ってデータを取得するシンプルな例
$userModel = new \App\Models\UserModel();
$users = $userModel->findAll(); // ユーザー全員のデータを取得する
foreach ($users as $user) {
echo '名前:' . $user['name'] . '<br>';
}
このコードでは findAll() という命令を使っています。これは「すべて見つけてきて」という意味です。これを書くだけで、データベースに登録されている何百人、何千人というユーザーの情報を一瞬で取得することができます。手作業で名簿を作るのは大変ですが、プログラムを使えばこのように魔法のような速さでデータを扱うことができるのです。モデルの使い方を覚えることで、より効率的に、かつ安全にデータを管理できるようになります。これがCodeIgniterの強力な機能の一つです。
7. 開発環境と本番環境の設定を分ける重要性
少し難しいお話かもしれませんが、大切なことなので解説します。Webサービスを開発するとき、自分のパソコンで行う「開発」と、世界中の人が見る「本番(公開)」の2つの場面があります。実は、開発用のデータベースと本番用のデータベースでは、住所やパスワードが違うことがほとんどです。自分のパソコンのパスワードをそのままインターネット上に公開してしまったら大変ですよね。
CodeIgniterでは、環境ごとに設定を切り替えることができる .env(ドットエンブ) という便利なファイルを使うことが推奨されています。このファイルを使うと、本番用の設定を隠したまま、自分のパソコンだけで動く特別な設定を保存しておくことができます。鍵のかかった秘密のメモ帳のようなものです。初心者のうちは Database.php を直接書き換えるだけでも十分ですが、少し慣れてきたら、この環境設定の切り分けについても意識してみましょう。
「セキュリティ」という言葉を耳にしたことがあるかもしれません。これは、大切なデータを悪い人から守るための工夫のことです。データベースのパスワードを適切に管理することも、立派なセキュリティ対策の一部です。最初から完璧にこなす必要はありませんが、「設定情報はとても大切なものなんだ」という意識を持っておくだけで、あなたの書くコードはより信頼性の高いものになっていきます。
8. よくあるトラブルとその解決方法(エラー対処法)
設定を頑張ったのに、どうしても繋がらない……。そんなときは、以下のチェックリストを確認してみてください。プロのエンジニアでも、実はこうした単純なミスで数時間悩むことがあります。まずは落ち着いて、一つずつ確認していきましょう。
- データベースは起動していますか?: XAMPPやMAMPなどのソフトを使っている場合、MySQLのスタートボタンが押されているか確認しましょう。倉庫のドアの前に、そもそも倉庫自体が建っていない状態かもしれません。
- データベース名(DB名)は合っていますか?: phpMyAdminなどで、自分が作ったデータベースの名前を正確に確認してください。1文字違いで繋がらないことはよくあります。
- セミコロンやクォーテーションを忘れていませんか?: PHPの命令の終わりには
;が必要ですし、文字を囲む' 'もペアになっていないといけません。 - ポート番号は正しいですか?: 特殊な設定をしている場合、住所の後に「3306」といった番号が必要になることがあります。
エラーが出たときは、ブラウザに表示される文字をよく見てください。例えば Access denied for user... と出ていれば、ユーザー名かパスワードが間違っています。Unknown database... と出ていれば、データベースの名前が間違っています。エラーメッセージはプログラムからのSOSサインです。それをヒントにして原因を突き止める作業を「デバッグ」と言います。デバッグができるようになると、プログラミングはどんどん楽しくなっていきますよ!
// 接続エラー時の出力イメージ(一例)
Unable to connect to the database.
Main connection [MySQLi]: Access denied for user 'root'@'localhost' (using password: YES)
このようなメッセージが出たら、それは「パスワードを使って接続しようとしたけれど、拒否されましたよ」という意味です。落ち着いて設定ファイルのパスワード欄を修正しましょう。何度も失敗して、ようやく繋がった瞬間の喜びは、プログラミング学習の中で最も最高な瞬間の一つです。諦めずに挑戦し続けましょう!