T-CREATOR

CodeIgniterで接続しているデータベースにPHPからテーブルを作成するサンプルコード

CodeIgniterで接続しているデータベースにPHPからテーブルを作成するサンプルコード
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ただいま、CodeIgniterにてオリジナルCMSを制作中の「とあるクリエイター」です。 その関係で「CodeIgniter」関連のメモの更新が増える予定です。

今回はCodeIgniterで接続しているデータベースにPHPからテーブルを作成するサンプルコードをメモしました。

最初に

まず、以下のサンプルテーブルを作ると仮定してサンプルコードを紹介いたします。
※実装時はフォームなどから、自由にフィールド名などの各項目を設定できるようにカスタマイズしてください。

サンプルテーブル

名前データ型デフォルト値その他
idINT(5)auteincrement
strVARCHAR(100)
checkboxENUM(a,b,c)a
createdDATETIME

テーブルを自動で作成

以下のパスのページにアクセスすると上記のサンプルテーブルを作成する
仕様で作成します。

sqlサイトURL/table/add

モデルの作成

以下のファイルを作成します。

application/model/table_model.php<?php
    class Table_model extends CI_Model{
        function __construct(){
            parent::__construct();
            $this->load->database();
            $this->load->dbforge();
        }
        public function add_table($fields,$table_name){
            if(!$this->db->table_exists($table_name)){
                $this->dbforge->add_field($fields); 
                $this->dbforge->add_key('id');
                $this->dbforge->create_table($table_name);
                return true;
            }
        }
    }
?>

コードについて

テーブルが存在しているか確認します。

php$this->db->table_exists();

データベースフォージクラスを読み込みます。

php$this->load->dbforge();

フィールドをセットします。

php$this->dbforge->add_field(); 

キーをセットします。

php$this->dbforge->add_key();

テーブルを作成します。

php$this->dbforge->create_table();

コントローラーの作成

以下のファイルを作成します。

application/controller/table.php<?php
class talbe extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->model('Table_model');
    }
    public add(){
        $table_name = 'sample_table'; //テーブル名
        $fields = array(
            'id' => array(
                'type' => 'INT',
                'constraint' => 5, 
                'auto_increment' => TRUE
            ),
            'str' => array(
                'type' => 'VARCHAR',
                'constraint' => '100'
            ),
            'checkbox' => array(
                'type' => 'ENUM',
                'constraint' => array('a','b','c'),
                'default' => 'a'
            ),
            'created' => array(
                'type' => 'DATETIME'
            )
        );
        if($this->Table_model->add_table($fields,$table_name)){
            echo $table_name.'を作成しました。';
        }
    }
}
?>

コードについて

$table_nameに作りたいテーブル名を入れます。 $fieldsに作りたいテーブルのフィールドを入れます。 今回は上記サンプルテーブルの内容を``$fields`の配列に代入しています。

最後に

ざっくりとした内容ですがこれで以下へへアクセスすると
tableが作成されます。

sqlサイトURL/table/add

いろいろとカスタマイズをして実装してみてください。

参考文献

記事Article

もっと見る