PHP와 MySQL 연동 원리

MySQL 서버를 제어하기 위해선 MySQL 모니터가 필요했다.

 

대표적 MySQL Monitor

MySQL 모니터에서 sql문을 입력하면 MySQL 서버가 처리한 후 결과를 보여준다.

MySQL 모니터는 MySQL에 대해서 클라이언트인 셈이다.

(MySQL 클라이언트에는 Workbench, phpMyAdmin 등이 있다.)

 

이때, PHP 도 MySQL 서버에 대해서 클라이언트로서 동작이 가능하다. 

 

PHP와 MySQL 연동을 위해

php mysql api를 검색 후, 이후 진행되는 실습에서는 mysqli api 방식을 사용하기로 하였다.

 

<?php
$conn = mysqli_connect('localhost','root','1111','mysqls'); 
$sql = "INSERT INTO topic
    (title, description, created)
    VALUES(
      '{$_POST['title']}',
      '{$_POST['description']}',
      NOW()
    )";
$result = mysqli_query($conn,$sql);
    
if ($result === false){
  echo mysqli_error($conn);
  echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
  error_log(mysqli_error($conn)); 
} else {
  echo '성공했습니다.';
}

if(mysqli_connect_error()){
	printf("Connect failed: %s\n",mysqli_connect_error()); 
	exit();
};
?>


① $conn = mysqli_connect('localhost','root','1111','mysqls');

// 데이터베이스에 PHP 접속
//함수에 들어가는 인자 : 호스트(데이터베이스의 서버 주소), 사용자 네임, 비밀번호, 데이터베이스(스키마) 이름

 

② $sql = "INSERT INTO topic
    (title, description, created)
    VALUES(

      '{$_POST['title']}',
      '{$_POST['description']}',

       NOW()

     )

";

// sql 문 작성. html에서 POST 방식으로 작성할 것이기 때문에 $_POST['name'] 방식 사용

 

③ $result = mysqli_query($conn,$sql);
//mysqli_query( ): php가 클라이언트가 되어 데이터베이스 서버에 sql문 실행

//실패 시 false, 성공 시 객체 리턴

// 함수에 들어가는 인자 : (데이터베이스 접속 정보 변수, sql문)

 

④ if ($result === false){
  echo mysqli_error($conn);

// mysqli_error( ) :저장하는 과정에서 어떤 에러가 발생했는지 알려주는 함수

// 그러나 사용자에게 그대로 보여주면 보안 위협이 있으므로 아래와 같이 진행
  echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
  error_log(mysqli_error($conn)); //error_log( ): 아파치 error log 디렉토리에 에러사항이 기록됨
} else {
  echo '성공했습니다.';
}

 

⑤ if(mysqli_connect_error()){

printf("Connect failed: %s\n",mysqli_connect_error());

exit();

}; // 접속 에러일 때 사용하는 함수
?>

'WEB > PHP' 카테고리의 다른 글

보안  (0) 2021.01.31
PHP와 MySQL_연동 후 데이터 출력  (0) 2021.01.31
PHP & DATABASE  (0) 2021.01.30
form과 GET, POST  (0) 2021.01.29
PHP 문법 기초  (0) 2021.01.28

+ Recent posts