고급 PHP 프로그래밍 – 데이터베이스 프로그래밍 – 0 – MySQL 데이터베이스 연결

고급 PHP 프로그래밍 - 데이터베이스 프로그래밍 - 0 - MySQL 데이터베이스 연결
고급 PHP 프로그래밍 – 데이터베이스 프로그래밍 – 0 – MySQL 데이터베이스 연결

고급 PHP 프로그래밍 – 데이터베이스 프로그래밍 – MySQL 데이터베이스 연결

안녕하세요! 😊
이번 시간부터는 PHP에서 본격적으로 데이터베이스와 연결해서 데이터를 저장하고 읽어오는 방법을 배워보겠습니다.
그 첫걸음은 바로 MySQL 데이터베이스와의 연결이에요.

MySQL은 PHP와 궁합이 아주 잘 맞는 오픈소스 관계형 데이터베이스(DB)로,
많은 웹사이트가 회원가입, 게시판, 상품 정보 등 다양한 데이터를 MySQL을 통해 관리하고 있어요.

비유하자면, PHP가 요리사라면 MySQL은 요리 재료를 보관하는 식재료 창고!
PHP는 MySQL에서 데이터를 꺼내와서 화면에 보여주거나, 새로운 정보를 저장해요 🧑‍🍳🍅


왜 MySQL과 연결해야 할까요?

  • 데이터를 영구적으로 저장할 수 있음
  • 회원 정보, 상품 정보, 게시글 등 동적인 웹 콘텐츠 제작 가능
  • 복잡한 데이터 검색, 정렬, 집계 등 고급 쿼리 처리 가능

✅ 정적인 HTML로는 불가능한 진짜 웹사이트를 만들기 위한 필수 기능!


1. MySQL 연결 방법 (mysqli, PDO)

PHP에서는 크게 두 가지 방식으로 MySQL에 연결할 수 있어요:

방식 특징
mysqli 절차형/객체형 모두 가능, 비교적 단순
PDO (PHP Data Object) 다양한 DB 지원, 보안성과 확장성 우수

이번 시간에는 우선 mysqli 방식을 사용해서 설명드릴게요!


2. mysqli를 이용한 MySQL 연결

✅ 기본 구조

$host = "localhost";
$user = "root";
$pass = "비밀번호";
$dbname = "데이터베이스명";

$conn = mysqli_connect($host, $user, $pass, $dbname);

if (!$conn) {
    die("❌ 데이터베이스 연결 실패: " . mysqli_connect_error());
}
echo "✅ MySQL 연결 성공!";

🧾 항목 설명

항목 설명
localhost MySQL이 같은 서버에 설치되었을 때
root 기본 관리자 계정 (운영 시 별도 사용자 생성 추천)
비밀번호 설치할 때 설정한 MySQL 비밀번호
데이터베이스명 연결할 데이터베이스 이름

🧪 예제 1: 간단한 연결 테스트

$conn = mysqli_connect("localhost", "root", "1234", "test_db");
if ($conn) {
    echo "🎉 연결되었습니다!";
} else {
    echo "❗ 연결에 실패했습니다.";
}

3. 객체지향 방식으로 연결하기 (mysqli OO)

$mysqli = new mysqli("localhost", "root", "1234", "test_db");

if ($mysqli->connect_error) {
    die("연결 실패: " . $mysqli->connect_error);
}
echo "✔️ 객체지향으로 연결 성공!";

둘 다 결과는 동일하지만, 유지보수나 재사용이 쉬운 객체형이 더 권장돼요!


4. 연결 후 인코딩 설정 (UTF-8)

MySQL은 기본적으로 latin1 인코딩을 사용하는 경우가 많아서
한글 데이터가 깨지는 것을 방지하기 위해 UTF-8 설정이 필요합니다.

mysqli_set_charset($conn, "utf8");

또는 객체형:

$mysqli->set_charset("utf8");

5. 연결 종료: mysqli_close()

모든 데이터베이스 작업이 끝나면 연결을 꼭 닫아주는 것이 좋습니다.

mysqli_close($conn);

객체형에서는:

$mysqli->close();

6. 데이터베이스 접속 정보 보안 팁

  • 접속 정보는 외부에 노출되지 않도록 별도 설정 파일(config.php)로 분리
  • 설정 파일은 반드시 웹 경로 외부나 .htaccess로 보호
  • 비밀번호는 깃허브에 업로드하지 않도록 .gitignore 사용

✅ 실전 예제 – 설정 파일 분리

db_config.php

<?php
$host = "localhost";
$user = "root";
$pass = "1234";
$dbname = "test_db";

$conn = mysqli_connect($host, $user, $pass, $dbname);
mysqli_set_charset($conn, "utf8");

if (!$conn) {
    die("DB 연결 실패: " . mysqli_connect_error());
}
?>

index.php

<?php
include "db_config.php";
echo "DB 연결 완료!";
?>

❗ 연결 시 자주 발생하는 오류

오류 메시지 원인
Access denied for user 아이디/비밀번호 틀림 또는 권한 없음
Unknown database 해당 이름의 DB가 없음
Can't connect to MySQL server 서버가 꺼져 있음 or 포트 오류
Character set not supported 문자셋 설정 오류 (utf8, utf8mb4 등 확인)

마무리 요약 🧠

항목 내용
연결 함수 mysqli_connect() 또는 new mysqli()
인코딩 설정 mysqli_set_charset()
연결 확인 mysqli_connect_error() 또는 $mysqli->connect_error
연결 종료 mysqli_close() 또는 $mysqli->close()
보안 설정 정보는 외부 노출 금지, .env 또는 별도 파일로 분리

마무리하며 😊

이제 여러분은 PHP에서 MySQL과 연결할 수 있는 탄탄한 기반을 갖추셨어요!
다음 시간에는 이 연결을 바탕으로 **데이터를 삽입(INSERT), 조회(SELECT)**하는 방법까지 배워보겠습니다.

데이터베이스는 여러분의 웹사이트에 생명력을 불어넣는 심장과 같아요!
잘 연결만 해두면, 멋진 기능은 그다음부터 정말 빠르게 구현된답니다.
오늘도 활기차고 안정된 개발 되세요! 💻🗃️✨

답글 남기기