팀 프로젝트 | MovieOn - 8

trevor1107·2021년 2월 7일
0

🔆오늘의 목표

  • DB연동

DB연동

google cloud platform에서 가상서버를 빌려서 node.js를 설치하고 gui도 설치하고 NVCViwer로 리눅스 우분투의 gui화면도 보는 것 까지 성공했지만.. 아직 무료로 체험판을 즐기고 있지만.. 가상서버의 요금이 생각보다 부담되어서, 나중에 체험판이 끝나고도 프로젝트를 포트폴리오로 활용하려면 이대로는 안되겠다는 생각에 다른 호스팅을 찾아 다녔다. 결국 닷홈 호스팅이랑 고도 호스팅중에 고민하다가.. 고도 호스팅의 웹 리눅스 호스팅을 사용하기로했다.

너무나 쉽게 되어있어서 FTP비번 설정, DB비번 설정, DB접속 ip추가!(문자 인증)
이제 DB를 연결하러 가볼까?

// sqlConnect.php

// 대부분의 웹 호스팅의 DB는 localhost밖에 지원하지 않음!
$mysqlHost = 'localhost'; 
$mysqlId = 'id';
$mysqlPassword = 'password';
$connect = mysqli_connect($mysqlHost, $mysqlId, $mysqlPassword);

// DB 선택
mysqli_select_db($connect, 데이터베이스 이름) or die('DB 선택 실패');

// SQL Query 실행
mysqli_query($connect, 쿼리문)

그리고 한가지 더 ! 웹 호스팅 서버는 데이터베이스 이름을 변경하거나 새로운 데이터베이스는 생성하지 못한다는 것! 1개만 제공해주는 거군!! 그래서 정해진 데이터베이스에서 테이블로만 관리해야한다. 데이터베이스를 나눠서 속도적인 이점을 가져가보고 싶었지만 .. 더 필요하면 구매해야겠죠?

<?php 

require_once './sqlConnect.php'; // sqlconnet.php을 포함

$id = $_REQUEST['id'];
$password = $_REQUEST['password'];
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$nickname = $_REQUEST['nickname'];
$birth = $_REQUEST['birth'];

echo ' id: '.$id; // 디버깅을 위해 임시로 체크 

$query = "INSERT INTO test1 (id, password, name, birth) 
VALUES ('$id', '$password', '$name', '$birth')";
$result = mysqli_query($connect, $query);
if($result)
{
    echo ' 테이블 데이터 쓰기 완료 ';
}
else{
    echo ' 테이블 데이터 쓰기 실패: '. mysqli_error($connect);
}
?>

한가지 여기서 시간 낭비했던 것은, 큰 따옴표와 작은 따옴표의 차이를 인식하지 못해서.. 문제가 발생!! 이상하게 VALUES에 문자열을 넣으니 잘 되었는데 안됐었던 이유를 공개한다.

$id = $_REQUEST['id'];
'INSERT INTO test1 (id) VALUES ("$id")'; // <<<< 이러면 오류가 발생한다
// 큰 따옴표 안에 작은 따옴표로 해주어야 변수를 인식해준다..
"INSERT INTO test1 (id) VALUES ('$id')"; 

큰 따옴표와 작은 따옴표를 잘 구분해서 쓰길.. 작은따옴표가 속도상 이점이 미세하게 있다고 한다. C언어 기준에서 생각하면 char과 string의 차이 때문일까..?

profile
프론트엔드 개발자

0개의 댓글