Ping!

MySQL, PHP를 이용한 간단한 게시판 구현

Jii- 2023. 3. 14. 10:30

이번 주차는 crud 정도의 간단한 기능을 가진 게시판을 PHP와 MySQL로 구현하는 것이 과제였다. 과제를 진행하기에 앞서 MySQL과 PHP 사용 경험이 없어 먼저 정리해보고자 한다. 

 

MySQL

오픈 소스의 관계형 데이터베이스 관리 시스템이다. 이때 관계형 데이터베이스는 데이터가 하나 이상의 열과 행의 테이블로 저장되어 있는 것이 특징이다. 관계형 데이터베이스에는 MySQL 외에도 PostgreSQL, MariaDB, Oracle Database가 있다. MySQL은 다양한 운영체제(유닉스, 리눅스, 윈도우 등)에서 사용 가능하며 PHP와 자주 쓰인다. 

 

지금까지 DB는 Oracle만 이용했어서 비교해보고자 한다.

 

  Oracle MySQL
구조적 차이 DB 서버가 통합된 하나의 스토리지 공유 DB 서버마다 독립적인 스토리지 할당
조인 방식 차이 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식 제공 중첩 루프 조인 방식 제공
확장성의 차이 별도의 DBMS 설치 사용 불가 별도의 DBMS 설치 사용 가능
메모리 사용율의 차이 메모리 사용율이 크기 때문에 수백MB 이상 되어야 설치 가능 메모리 사용율이 낮기 때문에 1MB 환경에서도 설치 가능

* 스토리지 : 컴퓨터에 데이터를 저장하는 저장소 역할을 수행하는 부품. 하드디스크와 동일한 역할을 수행함. 

* DBMS : Database Management System으로 데이터베이스를 운영하고 관리하는 소프트웨어.

 

다음으로 구문 비교이다. 

 

  Oracle MySQL
Null 값 확인 함수 NVL(열명, '대체값'); IFNULL(열명, '대체값');
페이징 처리 ROWNUM <= 숫자; LIMIT 시작 위치, 가져올 데이터  수;
DUAL SELECT 1 FROM DUAL; SELECT 1;
현재 날짜 SELECT SYSDATE FROM DUAL; SELECT NOW();
조건식 SELECT DECODE(칼럼, 값, TRUE일 때 출력 값, FALSE일 때 출력 값) FROM TABLE; SELECT IFNULL(조건식, TRUE일 때 출력 값, FALSE 일 때 출력 값) FROM TABLE;
날짜 형식  SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
시퀀스 생성 CREATE SEQUENCE [시퀀스 명];
INCREMENT BY [증감 숫자];
START WITH [시작 숫자];
CREATE TABLE (SEQ_NBR INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

이 외에도 다양한 구문 차이가 있다. 

 

참고 : https://mantaray.tistory.com/38

 

ORACLE과 MYSQL의 차이점

구조적 차이 오라클 : DB 서버가 통합된 하나의 스토리지를 공유하는 방식 MYSQL : DB 서버마다 독립적인 스토리지를 할당하는 방식 조인 방식의 차이 오라클 : 중첩 루프 조인, 해시 조인, 소트 머

mantaray.tistory.com

 

PHP

Hypertext Preprocessor로 서버 측에서 실행되는 서버 사이드 스크립트 언어이다. 대표적인 서버 사이드 스크립트 언어로는 PHP, ASP, C 서버 스크립트, JSP 등이 있다. 

 


 

게시판 구현 기능은 아래의 블로그를 참고하여 진행하였다. 진행 과정 중 PHP 문법 사항이나 이해가 안 갔던 부분을 정리해보고자 한다. 

참고 : https://dawitblog.tistory.com/10?category=901190

 

[PHP+MySQL]게시판 만들기 1 - 개발환경 구축과 DB설계

이 글은 이곳을 참고하여 쓰여졌습니다. 개발환경 구축 VS code로 PHP를 개발하기로 했다. code.visualstudio.com/ 이곳에 들어가면, 큼지막한 다운로드 버튼 클릭 설치후 바로 VS code 실행해준다. 1초만에

dawitblog.tistory.com

 

<?php include  $_SERVER['DOCUMENT_ROOT']."파일 경로"; ?>

실행하고자하는 다른 PHP 파일을 포함시킬 때 사용하는 방법이다. 

$_SERVER['DOCUMENT_ROOT']

httpd.conf 파일에 설정된 웹서버의 루트 디렉터리를 의미한다. 즉 현재 실행되고 있는 위치를 의미한다. 

 

* httpd.conf 파일에 설정된 웹서버 루트 디렉터리 확인 방법

find / -name "httpd.conf"

위의 명령어를 통해 httpd.conf 파일 위치를 확인한다. 해당 위치로 이동 후 관리자 권한으로 httpd.conf 파일을 열어 확인할 수 있다. 

 

참고 : https://velog.io/@timcodejs/PHP-MacOS%EC%97%90%EC%84%9C-PHP-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 

 

[PHP] MacOS에서 PHP 설치하기

맥북에서 PHP 실행하기~!가장 먼저 MacOS에는 기본적으로 PHP와 apache(apachectl)가 설치되어 있다.하지만 apache가 설치되어 있는 폴더 내부의 httpd.conf 파일을 보면"PHP was deprecated in macOS 11 and rem

velog.io

 

$_GET['idx'];
$_POST['name'];

HTML의 form을 이용하여 값을 전송했을 때 PHP로 그 값을 받는 방법이다. 이름에서부터 알 수 있듯이 GET 방식으로 전송된 값은 $_GET으로, POST 방식으로 전송된 값은 $_POST로 받는다. 

 

$userpw = password_hash($_POST['pw'], PASSWORD_DEFAULT);

 

password_hash 함수는 문자열을 암호화하는 데 사용한다. 기본적으로 2개의 매개변수를 받으며 첫 번째 매개변수는 변환할 String 혹은 Number 타입이며 두 번째 매개변수는 변환할 때 사용할 알고리즘 형태이다.