PHP로 웹페이지를 만들었는데, 이제는 진짜 데이터를 저장하고 싶으신가요? MySQL 연동부터 실전 코드까지 정리해드립니다.
안녕하세요, 개발 입문자 여러분! 저도 처음 PHP를 배울 때는 웹 페이지에 글씨만 띄우는 걸로도 뿌듯했어요. 그런데 어느 순간 이런 생각이 들더라고요. “사용자 데이터를 어디에 저장하지?” 그때 등장한 게 바로 MySQL이라는 데이터베이스입니다. PHP와 MySQL은 정말 찰떡궁합이에요. PHP는 데이터를 입력하고 출력하는 역할, MySQL은 그 데이터를 기억하고 관리하는 역할을 하죠.
이번 글에서는 진짜 PHP 코드와 MySQL 데이터베이스를 연결하고, 데이터를 저장하고 불러오는 전 과정을 아주 쉽게 설명드릴게요.
이 글 하나면 여러분도 백엔드의 세계에 첫 발을 내딛을 수 있어요!
목차
왜 PHP와 MySQL을 연결해야 할까?
PHP는 데이터를 화면에 출력하거나 입력받는 역할을 하고, MySQL은 데이터를 저장하고 관리하는 역할을 합니다. 예를 들어 로그인 정보, 게시판 글, 회원가입 데이터처럼 ‘기억해야 할 정보’가 있다면, 이건 반드시 데이터베이스에 저장되어야 해요. 단순히 화면에만 출력되는 정보는 새로고침하면 사라지지만, MySQL에 저장하면 서버에 안전하게 보존할 수 있습니다. 그래서 진짜 웹 애플리케이션을 만들기 위해선 PHP와 MySQL의 연결은 필수입니다.
PHP에서 MySQL 연결하기 (mysqli 방식)
PHP에서 MySQL에 접근하려면 mysqli
또는 PDO
확장 모듈을 사용합니다. 여기서는 가장 쉬운 mysqli
를 사용해 데이터베이스에 접속하는 기본 코드를 알려드릴게요.
<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "test_db";
$conn = mysqli_connect($host, $user, $pass, $dbname);
if (!$conn) {
die("연결 실패: " . mysqli_connect_error());
} else {
echo "MySQL 연결 성공!";
}
?>
변수 | 설명 |
---|---|
$host |
MySQL 서버 주소 (로컬 개발일 경우 localhost) |
$user |
MySQL 접속 계정명 |
$dbname |
접속할 데이터베이스 이름 |
폼 데이터 MySQL에 저장하기
사용자로부터 입력받은 데이터를 MySQL에 저장하는 기본 예제를 만들어봅니다. 예를 들어 이름과 이메일을 입력받는 폼을 만들고, PHP로 이를 저장하는 방식입니다.
- HTML 폼으로 name, email 입력 받기
- PHP에서
$_POST
로 값 가져오기 INSERT INTO
구문으로 DB 저장
$name = $_POST['name'];
$email = $_POST['email'];
$sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
$result = mysqli_query($conn, $sql);
if ($result) {
echo "저장 성공!";
} else {
echo "저장 실패: " . mysqli_error($conn);
}
MySQL에서 데이터 조회하고 출력하기
이번에는 저장된 데이터를 불러와 웹페이지에 출력하는 방법을 알아봅니다. 가장 기본적인 방식은 SELECT
구문을 사용하고, mysqli_fetch_assoc()
로 한 줄씩 데이터를 읽어오는 거예요.
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
echo "이름: " . $row['name'] . "<br>";
echo "이메일: " . $row['email'] . "<hr>";
}
이렇게 하면 DB에 저장된 모든 사용자 정보를 화면에 출력할 수 있습니다. 반복문을 사용해 원하는 형식으로 디자인할 수도 있어요.
연동 중 발생하는 오류 해결법
처음 PHP와 MySQL을 연동할 때는 다양한 에러에 직면하게 됩니다. 가장 자주 발생하는 오류들과 그 원인을 정리해보았습니다.
에러 메시지 | 원인 및 해결법 |
---|---|
Access denied for user 'root'@'localhost' | 비밀번호 오류 or 권한 문제 – 사용자/비밀번호 확인 필요 |
Unknown database 'mydb' | 지정한 데이터베이스가 존재하지 않음 – phpMyAdmin에서 먼저 생성 |
mysqli_fetch_assoc(): supplied argument is not a valid result | 쿼리 실패 – 쿼리문과 테이블명을 다시 점검 |
입문자를 위한 MySQL 실전 팁
MySQL을 처음 다루는 입문자분들을 위한 실전 팁입니다. 자주 겪는 시행착오를 줄이기 위해 꼭 기억해두세요!
- 한글 데이터 깨질 경우
SET NAMES utf8
사용 phpMyAdmin
에서 미리 테이블 구조 확인 후 연동- XAMPP 사용 시 MySQL과 Apache 모두 실행 상태 확인
- INSERT, SELECT 구문은 항상
mysqli_query()
결과값 확인 - DB 연결은 외부 파일로 분리하면 유지보수에 좋음
좋은 방법은 아닙니다. 보통 dbconn.php
같은 파일을 만들어서 모든 페이지에서 include
또는 require
로 불러옵니다.
둘 다 사용 가능하지만, PDO는 여러 데이터베이스를 지원하고 보안성도 뛰어나 실무에서는 선호됩니다. 입문자는 mysqli로 시작해도 충분해요.
보안상 위험할 수 있어요. 반드시 htmlspecialchars()
, mysqli_real_escape_string()
등의 필터링을 거쳐야 합니다.
DB 연결 직후 mysqli_set_charset($conn, "utf8")
을 추가하거나, MySQL 테이블과 PHP 파일 모두 UTF-8 인코딩으로 설정해야 합니다.
MySQL은 데이터베이스 시스템이고, phpMyAdmin은 이를 웹에서 관리하기 쉽게 만든 도구예요. 둘은 같은 시스템을 다루는 서로 다른 인터페이스입니다.
절대 안 됩니다! config.php
또는 .env
파일에 따로 보관하고, Git에서 제외(.gitignore
) 처리해야 해요.
처음에는 PHP만으로도 충분히 재미있지만, 데이터를 저장하고 불러오면서 진짜 웹 개발이 시작된다는 걸 느끼게 돼요. 저도 처음에 폼으로 입력한 내용을 DB에 저장하고 다시 불러왔을 때, 마치 마법처럼 느껴졌던 기억이 생생해요. PHP와 MySQL의 연동은 생각보다 어렵지 않지만, 반드시 순서와 구조를 잘 이해하고 넘어가는 게 중요해요. 이번 글을 따라오셨다면 이미 데이터베이스와 백엔드의 핵심을 경험한 거예요. 이제 더 복잡한 기능 — 게시판, 댓글, 로그인 시스템 — 도 모두 이 연결을 기반으로 만들어진답니다.
이 글을 계기로 더 재미있는 PHP 프로젝트에 도전해보세요! 💜
'💻 쇼핑몰 자동화 & 웹 개발 가이드' 카테고리의 다른 글
[PHP 입문] PHP 이메일 발송 마스터 가이드 (14) | 2025.04.17 |
---|---|
[PHP 입문] CRUD 게시판 만들기 입문 가이드 (26) | 2025.04.16 |
[PHP 입문] 세션(Session) 개념과 로그인 상태 유지 구현 (28) | 2025.04.14 |
[PHP 입문] 로그인 시스템 완성: 세션, 보안 처리까지 (69) | 2025.04.11 |
[PHP 입문] 함수 완전 정복: 선언, 매개변수, 반환, 내장함수 (52) | 2025.04.10 |