웹개발을 위해 PHP로 작성된 MVC
(Model, View, Controller)
프레임워크
코드이그나이터 튜토리얼
http://localhost/codeigniter3/
하면/opt/lampp/htdocs
폴더에 넣기 (폴더이름 수정함!)http://localhost/codeigniter4/public/
했으나Whoops! We seem to have hit a snag. Please try again later...
env
➡ .env
파일 이름 수정 # CI_ENVIRONMENT = production
➡ CI_ENVIRONMENT = development
수정CodeIgniter\Cache\Exceptions\CacheException Cache unable to write to /opt/lampp/htdocs/codeigniter4/writable/cache/
CacheException.php 의 55번째 줄
unableToWrite
에러라 권한 부여sudo chmod 777 -R /opt/lampp/htdocs/codeigniter4/writable/
상태 확인 sudo /opt/lampp/lampp status
mySQL 접속 sudo /opt/lampp/bin/mysql
접속이 되면 아래와 같이 환영 메시지가 뜬다
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 107
Server version: 10.4.14-MariaDB Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mySQL 용어
General information about MariaDB can be found at
http://mariadb.org
List of all client commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for 'help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to MariaDB server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to MariaDB server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing binlog
with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
For server side help, type 'help contents'
database 생성 ➡ CREATE "database 생성하려는 DB 이름";
생성하려 했으나 phpMyAdmin 에서 이미 생성한게 있어서 만들어지지 않았다..
추가로 만드는 방법이 당연히 있을것 같지만 일단은 기존에 만든걸로 진행
MariaDB [(none)]> CREATE database test;
ERROR 1007 (HY000): Can't create database 'test'; database exists
만들어진 database 사용 ➡ use "생성한 database 이름";
MariaDB [(none)]> use myDB;
Database changed
table 생성 ➡
CREATE TABLE "database 이름" (
num INT(11) unsigned NOT NULL,
title VARCHAR(100) NOT NULL,
PRIMARY KEY (num)
);
table 생성
위에 나온 용어 꼭 풀이하기
MariaDB [myDB]> CREATE TABLE myDB (
-> num INT(11) unsigned NOT NULL,
-> title VARCHAR(100) NOT NULL,
-> PRIMARY KEY (num)
-> );
Query OK, 0 rows affected (0.032 sec)
value 입력 ➡ INSERT INTO "database 이름" (num, title) VALUES(0, '테스트1');
MariaDB [myDB]> INSERT INTO myDB (num, title) VALUES(0, '테스트1');
Query OK, 1 row affected (0.027 sec)
MariaDB [myDB]> INSERT INTO myDB (num, title) VALUES(1, '테스트2');
Query OK, 1 row affected (0.007 sec)
// 중복값을 넣어서 생긴 오류
MariaDB [myDB]> INSERT INTO myDB (num, title) VALUES(0, '테스트2');
ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'
터미널 과정
phpMyAdmin 가서 확인해보면 아래와 같이 뜬다. 신기하다...
application/config/database.php
$db['myDB'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'myDB',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => 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
);
// 기본 코드
$db['default'] = array( // CI에서 DB를 불러올 때 사용할 이름, database와 동일하게 지정하는 것이 좋음
'dsn' => '',
'hostname' => 'localhost',
'username' => '', // DB에 접속할 user이름, 필수 설정
'password' => '', // DB user의 PW, 있으면 필수 설정
'database' => '', // DB 선택, 필수 설정
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => 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
);
application/controllers
<?php defined('BASEPATH') OR exit('No direct script access allowed');
//컨트롤러의 파일생성은 기본적으로 주소창의 주소 확장
//간단하게 말해 Main.php를 만들고 class를 설정하였다면 "URL/index.php/main"으로 접속 가능
//내부 function도 주소 확장, "URL/index.php/main"로 접속하였다면 function index()가 기본적으로 실행
//내부에 public function good() 함수를 추가하였다면 "URL/index.php/main/good"으로 실행
class Main extends CI_Controller {
function __construct() {
parent::__construct();
}
// index 함수 설정은 "URL/index.php/main" 또는 "URL/index.php/main/index"로 접속가능하게 함
public function index() {
// $this->load->model 명령어는 /application/models 폴더를 탐색한다고 이해해도 됨
// model('Main_model')에서 Main_model은 Main_model.php 파일을 찾겠다는 의미
// $this->Main_model->test();는 로드된 Main_model.php에서 myDBtest 함수를 실행하겠다는 뜻
$this->load->model('Main_model');
$this->Main_model->myDBTest();
}
}
application/models
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Main_model extends CI_model {
function __construct(){
parent::__construct();
// 위에서 설정한 /application/config/database.php 파일에서
// $db['myDB'] 설정값을 불러오겠다는 뜻
$this->test = $this->load->database('myDB', TRUE);
}
function myDBTest() {
// query 함수는 DB에 쿼리를 요청하는 것이며, 이 과정에서 오류가 뜨면 오류메시지 출력
$this->test->query("SELECT * FROM myDB");
echo "이 메세지를 보았다면 성공";
}
}
잘 연결되었다....
명령어 입력할때 ;
꼭 넣기
show databases
생성한 database를 볼 수 있다
decs "테이블 이름"
테이블의 구조를 볼 수 있다
show tables
database에 생성한 table을 볼 수 있다
SELECT * FROM "테이블 이름"
전체 컬럼 조회
drop database "데이터베이스 이름"