
고급 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)**하는 방법까지 배워보겠습니다.
데이터베이스는 여러분의 웹사이트에 생명력을 불어넣는 심장과 같아요!
잘 연결만 해두면, 멋진 기능은 그다음부터 정말 빠르게 구현된답니다.
오늘도 활기차고 안정된 개발 되세요! 💻🗃️✨