본문 바로가기
프로그래밍/코딩일반

⌨️ PDO 기본을 탄탄하게

by 강릉바다의 블로그 2026. 6. 19.

[1] school 테이블 구조

CREATE TABLE school (
    id INT AUTO_INCREMENT PRIMARY KEY,
    grade INT NOT NULL,
    class_num INT NOT NULL,
    student_num INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    phone VARCHAR(20)
);

 

[2] DB연결

<?php

$host     = 'localhost';
$dbname   = 'school_db';
$username = 'root';
$password = '1234';

try {
    $pdo = new PDO(
        "mysql:host={$host};dbname={$dbname};charset=utf8mb4",
        $username,
        $password
    );

    // SQL 오류 발생 시 예외(Exception) 발생
    $pdo->setAttribute(
        PDO::ATTR_ERRMODE,
        PDO::ERRMODE_EXCEPTION
    );

} catch (PDOException $e) {
    die("DB 연결 실패 : " . $e->getMessage());
}
$dsn = "mysql:host=localhost;dbname=your_database;charset=utf8mb4";
$user = "username";
$password = "password";
$pdo = new PDO($dsn, $user, $password);

 

[3] INSERT

$stmt = $pdo->prepare(
    "INSERT INTO 테이블 (필드1, 필드2)
     VALUES (?, ?)"
);

$stmt->execute([$값1, $값2]);
<?php

// 저장할 데이터
$grade       = 2;
$class_num   = 3;
$student_num = 15;
$name        = "홍길동";
$phone       = "010-1234-5678";

// SQL 준비
$stmt = $pdo->prepare(
    "INSERT INTO school
    (grade, class_num, student_num, name, phone)
    VALUES (?, ?, ?, ?, ?)"
);

// 실행
$stmt->execute([
    $grade,
    $class_num,
    $student_num,
    $name,
    $phone
]);

echo "학생 정보 저장 완료";

 

[4] SELECT 여러 건

$stmt = $pdo->prepare(
    "SELECT *
     FROM 테이블
     WHERE 조건필드 = ?"
);

$stmt->execute([$조건]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
<?php

$grade = 2;

// SQL 준비
$stmt = $pdo->prepare(
    "SELECT *
     FROM school
     WHERE grade = ?"
);

// 실행
$stmt->execute([$grade]);

// 모든 결과 가져오기
$students = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 출력
foreach ($students as $student) {
    echo $student['name'] . "<br>";
}

 

[5] SELECT 한 건

$stmt->execute([$조건]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare(
    "SELECT *
     FROM school
     WHERE grade = ?
       AND class_num = ?
       AND student_num = ?"
);

$stmt->execute([
    $grade,
    $class_num,
    $student_num
]);

$student = $stmt->fetch(PDO::FETCH_ASSOC);

 

[6] COUNT

$stmt = $pdo->prepare(
    "SELECT COUNT(*)
     FROM 테이블
     WHERE 조건필드 = ?"
);

$stmt->execute([$조건]);
$count = $stmt->fetchColumn();
<?php

$grade = 2;

// SQL 준비
$stmt = $pdo->prepare(
    "SELECT COUNT(*)
     FROM school
     WHERE grade = ?"
);

// 실행
$stmt->execute([$grade]);

// 결과 가져오기
$count = $stmt->fetchColumn();

echo "2학년 학생 수 : " . $count;