PHP + MySQL 입문 실전 가이드

1장. PHP와 데이터베이스란?

PHP는 웹 서버에서 실행되는 프로그래밍 언어입니다.

대표적으로:

  • 회원가입
  • 로그인
  • 게시판
  • 쇼핑몰
  • 관리자 페이지
  • API 서버

등을 만들 때 많이 사용됩니다.

MySQL은 데이터를 저장하는 데이터베이스(DB)입니다.

예:

종류저장 데이터

회원 테이블 아이디, 비밀번호
게시판 테이블 제목, 내용
상품 테이블 상품명, 가격
주문 테이블 주문 정보

PHP는 데이터를 처리하고,
MySQL은 데이터를 저장합니다.


2장. 개발 환경 설치

XAMPP 설치

추천:

  • Apache
  • PHP
  • MySQL
  • phpMyAdmin

이 한 번에 설치됩니다.

공식 사이트:
https://www.apachefriends.org/

설치 후:

  • Apache 시작
  • MySQL 시작

브라우저:

http://localhost

접속되면 성공.


3장. PHP 기본 문법

PHP 시작

<?php

echo "Hello PHP";

?>

변수

<?php

$name = "홍길동";
$age = 20;

?>

배열

<?php

$colors = ["red", "blue", "green"];

echo $colors[0];

?>

반복문

<?php

for($i=0; $i<5; $i++) {
    echo $i;
}

?>

4장. HTML Form과 PHP

입력 폼

<form method="post" action="save.php">

    이름:
    <input type="text" name="name">

    <button type="submit">전송</button>

</form>

POST 받기

<?php

$name = $_POST['name'];

echo $name;

?>

5장. MySQL 기초

데이터베이스 생성

CREATE DATABASE myapp;

DB 사용

USE myapp;

테이블 생성

CREATE TABLE users (

    id INT AUTO_INCREMENT PRIMARY KEY,

    userid VARCHAR(50),

    password VARCHAR(255),

    name VARCHAR(100)

);

6장. PHP와 DB 연결

PDO 연결

<?php

$host = "localhost";
$dbname = "myapp";
$user = "root";
$pass = "";

try {

    $pdo = new PDO(
        "mysql:host=$host;dbname=$dbname;charset=utf8",
        $user,
        $pass
    );

    $pdo->setAttribute(
        PDO::ATTR_ERRMODE,
        PDO::ERRMODE_EXCEPTION
    );

    echo "연결 성공";

} catch(PDOException $e) {

    die("DB 연결 실패");
}

7장. 데이터 추가 INSERT

<?php

require "db.php";

$sql = "
INSERT INTO users(userid, password, name)
VALUES(:userid, :password, :name)
";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':userid' => 'test',
    ':password' => '1234',
    ':name' => '홍길동'
]);

8장. 데이터 조회 SELECT

<?php

require "db.php";

$sql = "SELECT * FROM users";

$stmt = $pdo->query($sql);

while($row = $stmt->fetch()) {

    echo $row['userid'];
    echo "<br>";
}

9장. 데이터 수정 UPDATE

<?php

$sql = "
UPDATE users
SET name = :name
WHERE id = :id
";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':name' => '김철수',
    ':id' => 1
]);

10장. 데이터 삭제 DELETE

<?php

$sql = "DELETE FROM users WHERE id = :id";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':id' => 1
]);

11장. 회원가입 만들기

회원가입 테이블

CREATE TABLE users (

    id INT AUTO_INCREMENT PRIMARY KEY,

    userid VARCHAR(50) UNIQUE,

    password VARCHAR(255),

    name VARCHAR(100),

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

회원가입 폼

<form method="post" action="register.php">

    아이디:
    <input type="text" name="userid">

    비밀번호:
    <input type="password" name="password">

    이름:
    <input type="text" name="name">

    <button type="submit">회원가입</button>

</form>

회원가입 처리

<?php

require "db.php";

$userid = $_POST['userid'];
$password = $_POST['password'];
$name = $_POST['name'];

$hash = password_hash($password, PASSWORD_DEFAULT);

$sql = "
INSERT INTO users(userid, password, name)
VALUES(:userid, :password, :name)
";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':userid' => $userid,
    ':password' => $hash,
    ':name' => $name
]);

echo "회원가입 완료";

12장. 로그인 만들기

<?php

session_start();

require "db.php";

$userid = $_POST['userid'];
$password = $_POST['password'];

$sql = "SELECT * FROM users WHERE userid = :userid";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':userid' => $userid
]);

$user = $stmt->fetch();

if($user) {

    if(password_verify($password, $user['password'])) {

        $_SESSION['userid'] = $user['userid'];

        echo "로그인 성공";

    } else {

        echo "비밀번호 오류";
    }

} else {

    echo "사용자 없음";
}

13장. 게시판 만들기

게시판 테이블

CREATE TABLE posts (

    id INT AUTO_INCREMENT PRIMARY KEY,

    title VARCHAR(255),

    content TEXT,

    writer VARCHAR(50),

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

글쓰기

<?php

session_start();

require "db.php";

$sql = "
INSERT INTO posts(title, content, writer)
VALUES(:title, :content, :writer)
";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':title' => $_POST['title'],
    ':content' => $_POST['content'],
    ':writer' => $_SESSION['userid']
]);

글 목록

<?php

$sql = "SELECT * FROM posts ORDER BY id DESC";

$stmt = $pdo->query($sql);

while($row = $stmt->fetch()) {

    echo $row['title'];
    echo "<br>";
}

14장. 메모장 프로젝트

메모 테이블

CREATE TABLE memos (

    id INT AUTO_INCREMENT PRIMARY KEY,

    content TEXT,

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

메모 저장

<?php

require "db.php";

$content = $_POST['content'];

$sql = "
INSERT INTO memos(content)
VALUES(:content)
";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':content' => $content
]);

15장. 쇼핑몰 구조 이해

쇼핑몰 핵심 구조:

상품
장바구니
주문
결제

상품 테이블

CREATE TABLE products (

    id INT AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(255),

    price INT,

    stock INT

);

주문 테이블

CREATE TABLE orders (

    id INT AUTO_INCREMENT PRIMARY KEY,

    userid VARCHAR(50),

    total_price INT,

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

16장. 보안

SQL Injection 방지

잘못된 코드:

$sql = "SELECT * FROM users WHERE id=".$_GET['id'];

반드시 prepare 사용:

$sql = "SELECT * FROM users WHERE id=:id";

$stmt = $pdo->prepare($sql);

$stmt->execute([
    ':id' => $_GET['id']
]);

XSS 방지

echo htmlspecialchars($title);

17장. 파일 업로드

업로드 폼

<form method="post"
      enctype="multipart/form-data"
      action="upload.php">

    <input type="file" name="image">

    <button type="submit">업로드</button>

</form>

업로드 처리

<?php

$file = $_FILES['image'];

move_uploaded_file(
    $file['tmp_name'],
    "uploads/".$file['name']
);

18장. 세션(Session)

로그인 유지 기능.

<?php

session_start();

$_SESSION['userid'] = 'test';

19장. 추천 프로젝트

추천 순서:

  1. 메모장
  2. TODO 앱
  3. 회원가입
  4. 로그인
  5. 게시판
  6. 댓글
  7. 이미지 게시판
  8. 쇼핑몰
  9. REST API
  10. 관리자 페이지

20장. Laravel 입문

Laravel은 PHP 프레임워크입니다.

장점:

  • 라우팅
  • ORM
  • 인증
  • 보안
  • API
  • 템플릿

등이 매우 강력합니다.

공식 사이트:
https://laravel.com/


21장. 실무 팁

가장 중요한 것

반복해서 많이 만드는 것.

특히:

  • CRUD
  • 로그인
  • 세션
  • 파일 업로드
  • DB 설계

를 많이 연습하면 실력이 빠르게 늘어납니다.


22장. 최종 학습 로드맵

HTML
→ CSS
→ JavaScript
→ PHP
→ MySQL
→ CRUD
→ 로그인
→ 게시판
→ 쇼핑몰
→ API
→ Laravel
→ 배포

부록. 자주 사용하는 SQL

전체 조회

SELECT * FROM users;

조건 조회

SELECT * FROM users
WHERE id = 1;

데이터 추가

INSERT INTO users(userid)
VALUES('test');

수정

UPDATE users
SET name='홍길동'
WHERE id=1;

삭제

DELETE FROM users
WHERE id=1;

마무리

PHP와 MySQL은 지금도 매우 강력한 웹 개발 조합입니다.

핵심은:

  • 직접 만들기
  • 작은 프로젝트 반복
  • CRUD 익히기
  • DB 설계 연습

입니다.

특히:

  • 회원가입
  • 로그인
  • 게시판
  • 메모장
  • 쇼핑몰

을 직접 여러 번 만들어보면 웹 개발 구조가 자연스럽게 이해됩니다.

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

PHP 기초 문법 #1  (0) 2026.05.10
PHP 시작하기 - Barcode128  (0) 2024.08.08
PHP 시작하기 - Barcode39  (0) 2024.08.08
PHP 소개  (0) 2024.08.08
PHP 시작하기 - curl이용 웹크롤링  (0) 2024.07.02

+ Recent posts