コードイグナイター DB接続の方法

コードイグナイター DB接続の方法について

・どこを設定したらいいのか?

・「自動」と「手動」の二種類がある

 

開発者が「データベースの接続」、「切断処理」を コーディングしなくてよい!!接続のタイミングは、「autoinit」で変更できる。

 

などがポイントです。

 

【参照】

http://www.ci-guide.info/db/config/#autoinit

 

DBの複数設定

DBを複数設定する事もできる

1つの設定ファイルで、複数のデータベースに接続できます。

 

「開発 (development)」 「テスト (testing)」 「本番 (production)」

 

環境ごとに設定ファイルを作成するとよいです。

 

 

設定ファイル

application/config/

データベース設定ファイルは、「application/config/」ディレクトリ内の「database.php」にデフォルトで書かれています。

ここの配列情報などを書き換えて使います。

 

 

・開発用「application/config/development.php」

・テスト用「application/config/testing.php」

・本番用「application/config/production.php」 などとファイルやフォルダを作っても大丈夫!!

 

http://www.ci-guide.info/db/config/

 

 

データベースへの接続

自動と、手動の2種類がある

DB接続するには、二つの方法があります。「自動接続」と「手動接続」です。 

基本は自動です。


「自動」・・・全てのページでDBを利用するならこれ

「手動」・・・ページ数がすくないなら、手動設定。

 

としましょう。

 

自動接続の場合

application/config/autoload.php をひらきます。


$autoload['libraries'] = array('');

 

となっているので

 

$autoload['libraries'] = array('database');

 

に変更します。これで利用できるようになります。

 

 

“自動接続” 機能は、ページが読み込まれるたびに「データベースクラス」をロードし、 自動でインスタンス化します。

つまり、自動で使えるってわけです。

 

手動接続の場合

$this->load->database();

 

ページの適切な場所に、これを書きます。

コンストラクタに書いたりします。

 

 

データベースクラスの初期化

データベースクラスの初期化します。


$this->load->database();

 

上のように書くと、そのページだけ、DBを利用する事ができるようになります。

いったんロードされれば、DBを使う準備が整います。

 

※全てのページで利用する場合は、自動ロードをした方がいい!!

オートロードするとよい。

 

【参照】

http://codeigniter.jp/user_guide/3/database/examples.html

 

データベースの識別

「$db」変数に二次元連想配列として格納されています。

 

一次元目の添え字(インデックスキー)は「複数のデータベース」を識別するための文字列を指定します。、
二次元目の添え字に「各設定項目名」を指定。

 

CodeIgniterをインストールした直後には、「default」という

データベース識別子が用意されています。


$db['default'] = array();

 

 

dbオブジェクトを生成

まず、データベースオブジェクトを生成する。

データベースオブジェクトは、「CI_Loader」コアクラスの 「database()」メソッドで生成します。

 

application/config/database.php

$active_group = 'default';

$db['default']['hostname'] = 'master.your.site';

//省略

$db['slave']['hostname'] = 'slave.your.site';
//省略

 

【参照】

http://www.ci-guide.info/db/config/#autoinit

 

 

dbオブジェクト

database($params = '', $return = FALSE, $active_record = NULL)

 

データベースオブジェクトを生成します。

 

■第一1引数

第一引数に、「database.php」で設定したデータベース識別名を指定すると

「database.php」で設定した情報を基に データベースに接続。

データベース識別子を指定しなかった場合、「default」の設定情報が使われる。

 

手動設定の連想配列で指定すると、設定情報を基にデータベースに接続します。

 

 

■第2引数

第二引数に「TRUE」を指定するとデータベースオブジェクトのインスタンスを返します。


複数のデータベースを運用している場合は、個別にインスタンスを生成し、使い分けることができます。

 

■第3引数

第三引数は、CodeIgniter独自仕様の「Active Recode」を利用するか?についてです

「TRUE」または、「FALSE」で指定。


第三引数を指定しなかった場合

「database.php」設定ファイル「$active_record」の設定値が適用。

 

 

$this->load->database(); // defaultの情報を基に生成
$this->db->query('SELECT count(*) FROM hoge_tbl');

 

第一引数にデータベース識別子を指定すると、database.php設定ファイルに設定された特定の データベース情報を基にオブジェクトを生成することができます

 

default データベースに接続

$this->load->database();

 

デフォルトのDBに接続されます。

 

デフォルトの設定は、application/config/database.php 内に書かれています。

 

二次元連想配列で書かれています。

 

$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root', //追加
'password' => '1234', //追加しないとエラーになる。(接続はしている)
'database' => 'ci_site', //追加
'dbdriver' => 'mysqli',//mysqliが初期値
'dbprefix' => '',
'pconnect' => FALSE,//FALSEが初期値。永続的な接続を使うかどうか。
'db_debug' => (ENVIRONMENT !== 'production'),//データベースエラーを表示するかどうか。
'cache_on' => FALSE,// データベースクエリのキャッシュを有効にするかどうか
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);

 

ここを設定すれば、何とかなります。

 

【参照】

http://www.ci-guide.info/db/config/

 

 

手動設定情報でデータベースに接続

$config = array(

'hostname' => 'localhost',
'database' => 'my_database',
'username' => 'hoge',
'password' => 'pass_4_hoge',

);

$this->load->database($config);

 

配列にしておき、アクセスするようです。

 

 

複数データベースインスタンス

複数データベースインスタンスの時は

 

$db_primary = $this->load->database('default', TRUE);
$db_secondary = $this->load->database('secondary', TRUE);

 

第二引数まで指定するようですね。

 

 

結果の取得

データベースの検索結果は、「query()」メソッドやActiveRecordクラスの「get()」、「get_where()」
メソッドで返される「結果オブジェクト」(結果の事 データとかね)

 

「結果取得用のメソッド」を呼び出しましょう。

 

 

結果の取得

「query( )」メソッドや「get( )」メソッドから「結果」を取得。


$query = $this->db->query('SELECT * FROM user_tbl');

 

※オブジェクトは、クラスとかインスタンスなど「モノ」を、まとめて、ふんわりと表現したものです。

 

【参照】

http://www.ci-guide.info/db/result/

 

 

データベース接続確認

接続確認するには、データベースオブジェクトの「conn_id」プロパティの値を確認することで分かります。

 

「conn_id」プロパティの値が「FALSE」だと、接続されていません。

「FALSE」以外の場合は接続されています。

 

利用するデータベースドライバーによっては、値が「NULL」の場合があります。

 

if 文でチェックする場合は 「===」(型変換なし等号演算子)で比較しましょう。

 

【事例1】

$this->load->database();

if ($this->db->conn_id === FALSE){
echo 'データベースに接続されていません。';
}else{
echo 'データベースに接続されています。';
}

 

ifの()中で接続をチェック。elseで切り分けて、判定をしています。

 

【事例2】

$slave_db = $this->load->database('slave', TRUE);

if ($slave_db->conn_id === FALSE) {
echo 'データベースに接続されていません。';
} else {
echo 'データベースに接続されています。';
}

 

【参照】

https://railsguides.jp/active_record_basics.html

https://qiita.com/ryokky59/items/a1d0b4e86bacbd7ef6e8

 

 

コードイグナイターの勉強方法

 

コードイグナイターを学んでいきましょう。「・」が付いているものは、外部のサイトへ飛びます。

 

■ フレームワーク ■

フレームワークは何を使ったらいいのか?

ララベルとは?

コードイグナイターとは?

オートロードとは

無名関数とは?

MVCとは何か?

 

 

【フレームワーク】

基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザーが入っている。

 

 

参照サイト

オブジェクト指向とは?

PDOとは何か?

mysql_connect()

アロー演算子とは?

データベースへのアクセスについて

 

大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします

 

 

 

 

この記事を読んだ人は、こんな記事も読んでいます

 

SEO対策の基本 外部要因とは?

SEO対策の基本的である、外部要因とは何か?

SEO対策をするなら絶対に知っておきたい、基本知識です。

 

売れるサイトを作るのに知って起きたい知識

サーチエンジンマーケティングという言葉をご存知でしょうか?

ホームページで商品やサービスを売る時に必要な知識とは?

 

seo対策をするメリットとは

SEO対策をする5つのメリットとは?

なぜ上位表示させることが大事なのか?

なぜSEO対策をする必要があるのか

 

内部要因とは

SEO対策の内部要因とは?

上位表示させるためには、内部要因について知っておこう

上位表示させるために必要なのは、ソースコードを最適化することです

内部要因の対策について知りたい方はこちらへ

 

キーワード対策をするまえに

キーワード対策をする前に

そのキーワード対策。ちょっと待ってください。

そのまま対策をすると、必ずお金を損してしまいます。

個人事業主や中小企業が狙うべきキーワードとは?

広告費用が高くなる理由とは

広告費用が高くなる本当の理由とは?

売れないサイトに集めていませんか?広告費用がかかるわりには

お問い合わせが少ない・・・と感じる方は多いはずです。

購入率の悪いサイトに集客をしている可能性があります。

 

 

 

 

【SEO対策・webコンサルティングのプラスワーク対応エリアについて】

プラスワークでは、東京、神奈川、千葉、埼玉を中心に全国でwebコンサルティング、SEO対策、ホームページの更新、ホームページのリニューアル運営代行をしております。売上アップをお考えならお気軽にご相談ください。

 

【SEO対策・webコンサルティングのプラスワーク 対応地域】

北海道 [ 北海道 ]

東北  [ 青森 | 岩手 | 山形 | 福島 | 秋田 | 宮城 ]

関東  [ 東京 | 埼玉 | 千葉 | 茨城 | 栃木 | 群馬 | 神奈川 ]

甲信越 [ 山梨 | 長野 | 新潟 ]

北陸  [ 石川 | 福井 | 富山 ]

東海  [ 愛知 | 静岡 | 岐阜 | 三重 ]

近畿  [ 大阪 | 兵庫 | 京都 | 滋賀 | 奈良 | 和歌山 ]

中国  [ 島根 | 山口 |鳥取 | 広島 | 岡山 ]

四国  [ 徳島 | 香川 | 愛媛 | 高知 ]

九州  [ 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 ]

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

フェイスブック  ツイッター