1. 데이터베이스 생성
– DB 생성 후 선택
– MySQL일 경우 아래 코드 실행

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
KEY `ci_sessions_timestamp` (`timestamp`)
);

2. 최신 버전 다운로드
https://www.codeigniter.com/download
– 압축 풀고 웹서버에 업로드

3. 환경설정 파일들 수정 (/application/config 아래 있는 파일들)
database.php: username, password, database
config.php: base_url, encryption_key,

1
$config['index_page'] = '';// URL에서 index.php 없애기 위함
1
 
1
2
3
4
5
6
7
8
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent']    = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

autoload.php

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

4. /.htaccess 수정 (없다면 생성, /application/.htaccess 아님)

1
2
3
4
5
6
7
8
<ifmodule mod_rewrite.c="">
RewriteEngine On
RewriteBase /
RewriteCond $1 !^(index\.php|images|captcha|data|include|uploads|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</ifmodule>

5. /application/core/my_model.php 생성
– 모델 생성시 extends MY_Model 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--?php
defined('BASEPATH') OR exit('No direct script access allowed');

class MY_Model extends CI_Model {
    const DB_TABLE = '';// 테이블 명, 각 모델마다 정의해야 함
    const DB_TABLE_PK = 'idx';// 각 모델마다 정의해야 하지만 대부분 idx를 사용하므로 일단 고정

    /**
     * Create record.
     */

    private function insert() {
        $this--->db-&gt;insert($this::DB_TABLE, $this);
$this-&gt;{$this::DB_TABLE_PK} = $this-&gt;db-&gt;insert_id();
}
1
2
3
4
5
6
    /**
* Update record.
*/

private function update() {
$this-&gt;db-&gt;update($this::DB_TABLE, $this, array($this::DB_TABLE_PK =&gt; $this-&gt;{$this::DB_TABLE_PK}));
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* Populate from an array or standard class.
* @param mixed $row
*/

public function populate($row) {
foreach ($row as $key =&gt; $value) {
$this-&gt;$key = $value;
}
}

/**
* Load from the database.
* @param int $id
*/

public function load($id) {
$query = $this-&gt;db-&gt;get_where($this::DB_TABLE, array(
$this::DB_TABLE_PK =&gt; $id,
));
$this-&gt;populate($query-&gt;row());
}

/**
* Delete the current record.
*/

public function delete() {
$this-&gt;db-&gt;delete($this::DB_TABLE, array(
$this::DB_TABLE_PK =&gt; $this-&gt;{$this::DB_TABLE_PK},
));
unset($this-&gt;{$this::DB_TABLE_PK});
}

/**
* Save the record.
*/

public function save() {
if (isset($this-&gt;{$this::DB_TABLE_PK})) {

$this-&gt;update();
}
else {
$this-&gt;insert();
}
}
1
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    /**
* Get an array of Models with an optional limit, offset.
*
* @param int $limit Optional.
* @param int $offset Optional; if set, requires $limit.
* @return array Models populated by database, keyed by PK.
*/

public function get($limit = 0, $offset = 0) {
if ($limit) {
$query = $this-&gt;db-&gt;get($this::DB_TABLE, $limit, $offset);
}
else {
$query = $this-&gt;db-&gt;get($this::DB_TABLE);
}
$ret_val = array();
$class = get_class($this);
foreach ($query-&gt;result() as $row) {
$model = new $class;
$model-&gt;populate($row);
$ret_val[$row-&gt;{$this::DB_TABLE_PK}] = $model;
}
return $ret_val;
}
}

– /application/models/someModel.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--?php
defined('BASEPATH') OR exit('No direct script access allowed');

class SomeModel extends MY_Model {
    const DB_TABLE = 'someTbl';

    public $idx;
    public $title;
    public $desc;
    public $reg_date;
}
</code-->
- 컨트롤러에서 사용시
<code lang="php">
$this-&gt;load-&gt;model("someModel");
$this-&gt;someModel-&gt;title = "타이틀";
$this-&gt;someModel-&gt;save();

1
<code lang="php">또는

1
2
3
4
5
6
<code lang="php">$this-&gt;load-&gt;model("someModel");
$some = new someModel();
$some-&gt;title = "타이틀";
$some-&gt;save();

업데이트
1
 
1
2
3
4
5
$this-&gt;load-&gt;model("someModel");
$some = new someModel();
$some-&gt;load(1);// idx 번호
$some-&gt;title = "수정!";
$some-&gt;save();

6. 브라우저로 도메인 접근 (http://도메인/welcome/index)

1