CodeIgniter3

05. [CodeIgniter3] 데이터베이스 설정 & 연결 & 데이터 삽입(insert)

drizzle0925 2021. 12. 29. 10:20
728x90

데이터 베이스에 데이터를 삽입하기 위해 데이터 베이스와 테이블을 생성합니다.

create database db;

create table users(
user_id int unsigned primary key auto_increment,
name varchar(50),
email varchar(100),
mobile bigint unsigned
);

데이터베이스 설정

Application/config/database.php 파일에 $db에 필요한 값들을 입력합니다.

(port 번호가 3306을 사용하면 port는 따로 설정하지 않아도 됩니다.)

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => 'root', // 로그인 유저정보
	'password' => '111111', // 비밀번호
	'database' => 'db', // 접속할 데이터 베이스
	'port' => 3307 // port 번호
    ...
);

데이터베이스에 연결

CodeIgniter에서는 2가지 방법으로 데이터베이스와 연결할 수 있습니다.

1. 자동 연결 : 자동 연결은 application/config/autoload.php를 사용하여 수행할 수 있습니다.

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

 

2. 수동 연결 : 특정 컨트롤러에 대한 데이터베이스 연결을 원하는 경우 수동 연결을 사용할 수 있습니다.

수동 연결에서는 모든 컨트롤러에 대해 연결을 생성해야 하므로 자동 연결을 사용하는 것이 좋습니다.

$this->load->database();

Contoller 만들기

Application/controllers/Hello.php 에 아래 코드를 입력합니다.

<?php 
    class Hello extends CI_Controller
    {
        public function __construct()
        {
            // CodeIgniter의 기본 생성자 호출
            parent::__construct();

            // 데이터베이스 라이브러리를 수동으로 로드 (auto_load를 사용하지 않는 방법)
            $this->load->database();

            // 모델 로드
            $this->load->model('Hello_Model');
        }

        public function savedata()
        {
            // 등록 보기 양식 로드
            $this->load->view('registration');

            // 제출 버튼 확인
            if($this->input->post('save'))
            {
                // 폼 데이터를 가져와서 로컬 변수에 저장
                $n = $this->input->post('name');
                $e = $this->input->post('email');
                $m = $this->input->post("mobile");

                // Hello_Model의 saverecord 메소드를 호출하고 변수를 매개변수로 전달
                $this->Hello_Model->saverecords($n, $e, $m);
                echo "레코드를 저장하였습니다.";
            }
        }
    }
?>

 

View 만들기

Application/views/registration.php 파일을 생성하고 아래 코드를 입력합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>등록 폼</title>
</head>
<body>
    <form method="post">
        <table width="600" border="1" cellspacing="5" cellpadding="5">
            <tr>
                <td width="230">이름을 입력하세요</td>
                <td width="329"><input type="text" name="name" /></td>
            </tr>
            <tr>
                <td>이메일 주소를 입력하세요</td>
                <td><input type="text" name="email"/></td>
            </tr>
            <tr>
                <td>연락처를 입력하세요</td>
                <td><input type="text" name="mobile"></td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="데이터저장" name="save" /></td>
            </tr>
        </table>
    </form>
</body>
</html>

 

Model 만들기

Application/models/Hello_Model.php 경로에 파일을 만들고 아래 코드를 입력합니다.

<?php 
class Hello_Model extends CI_Model
{
    function saverecords($name, $email, $mobile)
    {
        $query = "INSERT INTO users values('','$name','$email','$mobile')";
        $this->db->query($query);
    }
}
?>

 

Hello Contoller의 savedata 메서드를 호출합니다.

http://localhost/index.php/hello/savedata

 

레코드를 입력하고 데이터 저장 버튼을 클릭합니다.

 

정상적으로 레코드가 저장되었습니다.

 

저장된 레코드를 확인해봅니다.

 

Github

https://github.com/jun0925/study/commit/d1faa89df39a96e06aa4ea7cbe502bcab8adc285

728x90