💻 쇼핑몰 자동화 & 웹 개발 가이드

[PHP 입문] MySQL 연동 기초: 데이터베이스 첫걸음

rhandy 2025. 4. 15. 07:10
728x90

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로 이를 저장하는 방식입니다.

  1. HTML 폼으로 name, email 입력 받기
  2. PHP에서 $_POST로 값 가져오기
  3. 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 연결은 외부 파일로 분리하면 유지보수에 좋음
Q 데이터베이스 연결은 매 파일마다 해야 하나요?

좋은 방법은 아닙니다. 보통 dbconn.php 같은 파일을 만들어서 모든 페이지에서 include 또는 require로 불러옵니다.

A DB 연결은 별도 파일로 빼고 불러오는 게 정석이에요.
Q mysqli와 PDO 중 뭘 써야 하나요?

둘 다 사용 가능하지만, PDO는 여러 데이터베이스를 지원하고 보안성도 뛰어나 실무에서는 선호됩니다. 입문자는 mysqli로 시작해도 충분해요.

A 입문은 mysqli로, 실무는 PDO 추천드려요!
Q HTML 입력값을 바로 DB에 넣어도 되나요?

보안상 위험할 수 있어요. 반드시 htmlspecialchars(), mysqli_real_escape_string() 등의 필터링을 거쳐야 합니다.

A 필터링 없이 입력값을 저장하면 XSS나 SQL Injection 위험!
Q 데이터가 한글일 때 깨져요. 왜 그런가요?

DB 연결 직후 mysqli_set_charset($conn, "utf8")을 추가하거나, MySQL 테이블과 PHP 파일 모두 UTF-8 인코딩으로 설정해야 합니다.

A utf8 설정은 DB와 PHP 양쪽 모두에 적용해야 해요!
Q phpMyAdmin과 MySQL은 뭐가 다른가요?

MySQL은 데이터베이스 시스템이고, phpMyAdmin은 이를 웹에서 관리하기 쉽게 만든 도구예요. 둘은 같은 시스템을 다루는 서로 다른 인터페이스입니다.

A phpMyAdmin은 MySQL을 쉽게 다루는 관리 도구입니다.
Q DB 접속 정보를 Git에 올려도 되나요?

절대 안 됩니다! config.php 또는 .env 파일에 따로 보관하고, Git에서 제외(.gitignore) 처리해야 해요.

A 민감한 정보는 Git에 절대 업로드하지 마세요!

 

처음에는 PHP만으로도 충분히 재미있지만, 데이터를 저장하고 불러오면서 진짜 웹 개발이 시작된다는 걸 느끼게 돼요. 저도 처음에 폼으로 입력한 내용을 DB에 저장하고 다시 불러왔을 때, 마치 마법처럼 느껴졌던 기억이 생생해요. PHP와 MySQL의 연동은 생각보다 어렵지 않지만, 반드시 순서와 구조를 잘 이해하고 넘어가는 게 중요해요. 이번 글을 따라오셨다면 이미 데이터베이스와 백엔드의 핵심을 경험한 거예요. 이제 더 복잡한 기능 — 게시판, 댓글, 로그인 시스템 — 도 모두 이 연결을 기반으로 만들어진답니다.

이 글을 계기로 더 재미있는 PHP 프로젝트에 도전해보세요! 💜

728x90