웹애플리케이션 만들기 – MySQL 실습1 : PHP와 연동

우리가 이전 시간에 데이터베이스 이론 수업을 진행을 했구요 이번 시간에는 우리가 배운 그 데이터베이스를 실제로 활용해서 웹 애플리케이션을 만드는 구체적인 방법에 대해서 살펴보겠습니다

우선 복습 차원에서 예전에 우리가 작업했던 것을 다시 한 번 리뷰를 해 보죠 보시는 것 처럼 이런 구성이었어요 웹브라우저, 웹서버, PHP 그리고 데이터는 FILE에 저장되어 있는 상태가 우리가 지금까지 만들어오던 micro 한, 작은 opentutorials 예제가 이런 구성으로 현재 되어 있었다는 것이죠 그 중에서 저 FILE이라고 되어있는 부분, 데이터를 FILE에 저장하고 있었던 것을 좀 더 개선해서, FILE이 아니라 바로 MySQL이라고 하는 데이터베이스로 교체하는 작업을 이번 시간부터 우리가 진행을 할 겁니다 그래서 결과적으로 우리가 만든 애플리케이션이 동작하는 방법에는 차이가 없습니다 다만 그 내부적으로 정보를 파일에 저장하느냐 데이터베이스에 저장하느냐의 차이가 생겼을 뿐이구요

그런 맥락에서 이 PHP라고 하는 것은, 이 파일에 데이터 저장하고 읽고 이랬던 역할에서, 보시는 것처럼 이 데이터베이스 시스템과 또 웹서버 사이에서 이렇게 중계자와 같은 역할을 하게 됩니다 즉 사용자가 요청한 aphp를 웹서버가 처리할 수가 없기 때문에 PHP에게 위임을 하는데 그 aphp에 데이터베이스에 있는 정보를 가져와서 웹페이지로 만들라는 코드가 들어가 있다면 이 PHP가 중간에서 데이터베이스에 있는 정보를 가져와서 웹페이지를 만들어내는 일종의 중계자와 같은 역할을 한다는 것이죠 그런 맥락에서 이런 PHP 애플리케이션을 우리가 미들웨어라고도 부릅니다

그럼 PHP가 그런 일을 하기 위해서 무엇을 우리가 사용을 해야 되고 어떻게 프로그래밍을 해야 되냐면, 바로 “mysqli”라고 하는 이 PHP에 내장되어 있는 API를 사용을 해서 우리가 그런 목적을 달성할 수가 있습니다 그러면 지금부터 우리가 일단 실습 환경을 좀 구축을 해 보죠 실습 환경은 이미 다 구축이 되어있어요 우리가 기존에 indexphp라는 파일을 이용해서 샘플을 만들었죠

그리고 이 파일 내부적으로는 8개 콘텐츠, 즉 파일을 읽어드릴 때 사용하는 API를 사용을 해서 구축이 되어 있었습니다 바로 이런 부분들을 우리가 PHP로 데이터베이스를 핸들링 할 때 사용하는 mysqli로 교체 하려고 하는 겁니다 그 때 사용하는 것은 일단은 제일 위 쪽에 이렇게 PHP를 입력할 수 있는 부분을 만들어주시고요 여기에 제가 지금부터 설명 드리는 내용을 추가하시면 됩니다 그런데 데이터베이스를 핸들링하는 데이터베이스를 다루는 코드는 꽤 복잡하고 다양한 이 문제 상황들이 발생할 수가 있기 때문에, 여러분들이 어떤 문제가 발생했는지를 알고 계셔야 됩니다

그냥 보시면 화면에 아무것도 표시가 안 될 거기 때문에, 그래서 제가 예전에 여러분들에게 말씀 드렸던게 기억나실지 모르겠는데, 이 디버그라는 수업에서 문제가 발생했을 때 어떤 문제가 발생했는지를 알 수 있는 파일이 있다고 말씀을 드렸습니다 그 파일을 열어놓고 실습을 진행하셔야 돼요 그러면 그 파일을 찾는 법을 다시 한 번 remind를 시켜줄게요 우선 “FILE”에서 “Open File”을 선택하시구요 “Bitnami”디렉토리에서 “ampstack”으로 들어가신 후에, 그 중에서 “apache”로 들어 가시고, “logs”라고 되어있는 곳으로 들어가시면, “error

log”라는 파일이 있습니다 저 파일을 열어보시면 이렇게 생긴 화면이 뜨는데요 바로 여기에 에러가 있을 경우에 그 에러 내용이 여기에 표시가 됩니다 그 내용을 보시고 어디에서 문제가 생겼는지를 추적하시면 되구요 또는 다른 사람에게 질문할 때 이 에러 메시지를 다른 사람에게 보여주는 것을 통해서 문제 해결에 도움을 받을 수 있을 겁니다

그러면 이제부터 이곳에 들어가야 될 코드들을 우리가 하나씩 하나씩 살펴보도록 하죠 제가 표를 하나 준비 했는데요, 여기 보시면 이 MySQL monitor가 왼쪽에 있고요, 그 오른쪽에는 PHP에서 데이터베이스를 사용하기 위해서 PHP가 제공하는 내장 함수 API인 mysqli가 이렇게 있습니다 그리고 왼쪽 끝에 보시면 “서버접속”, “DB 선택”, “조회”, “출력” 이라고 되어 있는데요, 이것은 우리가 이 데이터베이스 클라이언트가 베이터베이스 서버에 접속해서 어떤 일을 처리할 때 일어나는 작업들을 순차적으로 나열한 것 입니다 그래서 우리가 이미 MySQL monitor를 사용을 해 봤잖아요 그리고 이제부터 사용할 것은 mysqli인데, 이 두 가지 모두 이 데이터베이스 서버 입장에서는 그 서버에게 무언가를 요청하는 클라이언트이기 때문에 본질적으로 하는 일이나 또는 그것을 조작하는 방법은 사실 같습니다

하나는 일반적인 프로그램이고 그리고 또 하나는 API라고 하는 그런 차이가 조금 있을 뿐 이예요 그래서 익숙한 MySQL monitor를 통해서 그것에 대응되는 이 mysqli의 사용 방법을 짚어보도록 하겠습니다 우선 제일 먼저 MySQL monitor를 사용할 때 우리가 제일 먼저 하는 일은 뭐예요? 이런 명령을 운영체제에서 입력하죠? 이 명령이 의미하는 것은, localhost에 존재하는 데이터베이스 서버에 접속할 때, 아이디 값은 “root”고, 비밀번호는 “111111”인 사용자의 명의로 접속을 하겠다 라는 뜻이죠 그것과 대응되는 mysqli의 명령은 이렇게 됩니다 여기 보시면 “mysqli_connect()” 이렇게 되어 있습니다

그것은 뭐냐면 mysqli_connect가 바로 함수라는 거죠 그런데 저 함수는 여러분이 만든 적이 없기 때문에 기본적으로 PHP에서 내장되어있는 함수예요 실제로 데이터베이스를 핸들링하는 작업은 아주 복잡한 로직들에 의해서 이뤄지기 때문에 mysqli_connect 라고 하는 저 함수의 실제적인 내용은 상당히 복잡할 겁니다 그런데 단지 우리가 저 mysqli_connect 그리고 입력 값들을 주는 것을 통해서 데이터베이스에 아주 쉽게 접속할 수 있다는 거예요 처음 보셨을 때는 이것도 복잡하겠지만, 사실이 코드 한 줄이 함의하고 있는 복잡한 메커니즘을 생각한다면 우리가 얼마나 편하게 이 데이터베이스를 사용할 수 있는 것인지 여러분들이 상상은 하실 수 있을 것 같다는 생각을 합니다

아무튼 mysqli_connect라고 하는 저 함수의 메뉴얼을 살펴보면 그 첫 번째 입력 값으로는 host, 즉 접속하려고 하는 서버의 주소가 와야 된다고 되어 있구요 바로 그것이 MySQL monitor로 치면 이 부분이라고 할 수 있습니다 그리고 두 번째 입력 값은 사용자의 아이디 여기에 해당 되구요 마지막으로는 사용자의 비밀번호를 입력하라고 메뉴얼에 적혀있어요 “순서대로 입력해야 된다”라고 적혀있습니다 그것은 마지막 것은 이것이 되겠죠? 그래서 여러분이 이 코드를 실행을 시키면, 내부적으로 우리 눈에 보이지 않는 메커니즘에 의해서 데이터베이스 서버에 PHP가 접속을 하게 됩니다

그리고 접속에 성공하게 되면, 접속 결과를 “conn”connect를 줄여서 쓴 거예요 “conn” 변수에 입력 값으로 변수의 값으로 이렇게 이것이 출력을 해주는 것이죠 그럼 우리는 이 “$conn”라는 변수를 통해서 우리가 접속한 바로 이 정보에 의해서 접속된 서버를 제어할 수 있게 됩니다 이 코드를 실제 PHP 애플리케이션 코드에 반영하도록 하죠 PHP 코드가 시작되는 여기에 저렇게 하고서, 우선 “mysqli_connect(‘localhost’” -큰따옴표 작은 따옴표 상관 없습니다- 그 다음에 우리는 “root” 아이디이니까 아이디를 “root”를 적고요, 그 다음에 비밀번호는 “111111”이라고 적고 “;”을 합니다

그러면 저 함수가 실행된 결과는 “conn” 변수라고 할게요, “conn” 변수에 담기게 돼요 그 다음에 우리가 MySQL monitor를 사용할 때는 생각해보면, 서버에 접속한 다음에 그 다음에 뭘 했나요? 잘 기억 안 나실 수도 있는데 바로 데이터베이스를 선택했습니다 그때 사용하는 명령은 “use opentutorials” 였죠? 이 중에서 “use”라는 것은 명령어예요 그리고 “opentutorials”라는 것은 우리가 만든 데이터베이스의 이름인데요 “opentutorials”라는 데이터베이스를 이제부터 사용하겠다라고, MySQL monitor에서 명령을 내린거죠

그러면 그것에 해당되는 mysqli API는 무엇이 있을까요? 이것입니다 보시는 것 처럼 이 함수는 “mysqli_select_db“ 라고 하고, 첫 번째 인자로는 “$conn” 변수를 주셔야 됩니다 conn 변수라는 것은 mysqli_connect라고 하는 것을 통해서 접속에 성공했고 그 접속된 정보를 이 “conn”이라고 하는 변수에 담은 건데요 그 정보를 “mysqli_select_db“ 의 첫 번째 인자로 전달해 주도록 약속되어 있기 때문에 그대로 쓰시면 되는 겁니다 그 다음에는 우리가 사용하려고 하는 데이터베이스인 opentutorials를, 이렇게 그 다음 줄에 적어주시면 DB를 선택하는 것까지 끝난 것이 돼요 그러면 우리 코드에 반영해 보죠

우선 “mysqli_select_db”, “db”데이터베이스 약자입니다 그 다음에 첫 번째 입력 값으로 “conn”을 주시구요 그 다음에 두 번째로는 “opentutorials ”라고 이렇게 코딩을 하시면 됩니다 이렇게 해서 우리가 데이터베이스에 접속하고 데이터베이스를 선택하는 것 까지 우리가 알아 봤어요 그런데 시간이 좀 많이 됐고 우리가 할 이야기가 좀 더 많이 있기 때문에 실제로 테이블에 접근해서 그 테이블에 있는 정보를 가져온 후에 그것을 웹페이지로 만드는 우리 수업의 정말 클라이막스는 다음 시간에 다음 영상에서 살펴볼게요