このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0222

DBクラスの機能

 「クエリの生成と実行」の項で説明したメソッド以外にも、データベースオブジェクトには
いくつかのメソッドが提供されています。

 この項では、それらのメソッドについて解説しています。


platform()

 DBクラスを初期化する際に指定したドライバー名を返します。
 CodeIgniterに用意されているDBドライバーは以下になります。

    • mysql
    • mysqli
    • postgre
    • odbc
    • mssql
    • sqlite
    • oci8
    echo $this->db->platform();
    // mysql

version()

 接続されたデータベースのバージョンを文字列で返します。
 例えばMySQLの場合、「SELECT version() AS ver」SQLクエリの結果が返されます。

    echo $this->db->version();
    // 5.0.95-log

total_queries()

 DBオブジェクトが生成されてから「total_queries()」メソッドがコールされるまでに そのDBインスタンスにより発行されたSQLクエリの数を返します。

    $this->db->version();
    echo $this->db->total_queries();
    // 1

last_query() 一番上に戻る

 DBインスタンスにより発行された最後のSQLクエリを返します。

    $this->db->version();
    echo $this->db->last_query();
    // SELECT version() AS ver

primary($table = '') 一番上に戻る

 引数に指定されたテーブルの最初のカラム名を返します。
 最初のカラムがプライマリキーとは限りません。このメソッドは、あくまで最初のカラム名を返します。

    CREATE TABLE `hoge` (
        `first_column` int(11) NOT NULL,
        `second_column` int(11) NOT NULL,
        `third_column` int(11) NOT NULL,
        PRIMARY KEY  (`third_column`)
    );
    
    echo $this->db->primary('hoge');
    // first_column

list_tables() 一番上に戻る

 接続されているデータベースに含まれる全てのテーブルのテーブル名一覧を配列で返します。

    echo var_export($this->db->list_tables(), TRUE);
    /*
    array (
        0 => 'item_tbl',
        1 => 'shop_tbl',
        2 => 'user_tbl',
    )
    */
    

table_exists($table_name) 一番上に戻る

 引数で指定したテーブルが、接続されているデータベースに存在するか「TRUE」または、
FALSE」で返します。

    if ($this->db->table_exists('user_tbl')) {
      // TRUE
    } else {
      // FALSE
    }

list_fields($table = '') 一番上に戻る

 引数に指定されたテーブルに含まれる全てのカラムのカラム名を配列で返します。

    echo var_export($this->db->list_fields(user_tbl'), TRUE);
    /*
    array (
        0 => 'id',
        1 => 'name',
        2 => 'email',
    )
    */
    

field_exists($field_name, $table_name) 一番上に戻る

 台地引数に指定したカラムが、第二引数に指定されたテーブルにに存在するか「TRUE」または、
FALSE」で返します。

    if ($this->db->field_exists('name', 'user_tbl')) {
      // TRUE
    } else {
      // FALSE
    }

field_data($table = '') 一番上に戻る

 引数で指定されたテーブルのテーブルスキーマ(テーブル構造)の情報を返します。
データは、各カラムの詳細情報オブジェクトの配列となります。

    echo var_export($this->db->field_data(user_tbl'), TRUE);
    /*
    array (
        0 =>
        stdClass::__set_state(array(
            'name' => 'id',
            'type' => 'int',
            'default' => NULL,
            'max_length' => '11',
            'primary_key' => 1,
        )),
        1 =>
        stdClass::__set_state(array(
            'name' => 'name',
            'type' => 'varchar',
            'default' => NULL,
            'max_length' => '96',
            'primary_key' => 0,
        )),
        2 =>
        stdClass::__set_state(array(
            'name' => 'email',
            'type' => 'varchar',
            'default' => NULL,
            'max_length' => '96',
            'primary_key' => 0,
        )),
    )
    */
    
    $field_data = $this->db->field_data('user_tbl');
    foreach ($field_data as $data) {
        echo $data->name;
        echo $data->type;
        echo $data->default;
        echo $data->max_length;
        echo $data->primary_key;
    }