コードイグナイター 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コンサルティングのプラスワーク対応エリアについて】

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

 

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

北海道 [ 北海道 ]

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

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

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

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

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

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

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

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

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

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、ダイレクト レスポンス マーケティング、ウェブ マーケティング、マーケティング 分析、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

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