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의 차이 때문일까..?