고급 PHP 프로그래밍 – 데이터베이스 프로그래밍 – 2 – 데이터 조회와 조작

고급 PHP 프로그래밍 - 데이터베이스 프로그래밍 - 2 - 데이터 조회와 조작
고급 PHP 프로그래밍 – 데이터베이스 프로그래밍 – 2 – 데이터 조회와 조작

고급 PHP 프로그래밍 – 데이터베이스 프로그래밍 – 데이터 조회와 조작

안녕하세요! 😊
이번 시간에는 PHP에서 MySQL 데이터베이스에 저장된 데이터를 조회하고 조작하는 방법에 대해 자세히 알아보겠습니다.
데이터베이스에 연결하고, SQL 쿼리를 실행할 수 있게 되셨다면 이제는 본격적으로 데이터를 꺼내서 보여주고, 수정하고, 삭제하는 것까지 해봐야겠죠?

이 과정을 통해 웹사이트에 실제로 동적 콘텐츠를 보여주는 기술의 핵심을 익히게 됩니다.
게시판, 회원 목록, 상품 리스트, 댓글 등 거의 모든 기능은 바로 이 “조회와 조작”에서 출발해요!


1. 데이터 조회: SELECT

✅ 기본 형식

SELECT 컬럼명1, 컬럼명2 FROM 테이블명 WHERE 조건;

✅ PHP에서 사용 예시

$conn = mysqli_connect("localhost", "root", "1234", "test_db");
$sql = "SELECT id, username, email FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "🧍 ID: " . $row['id'] . ", 이름: " . $row['username'] . ", 이메일: " . $row['email'] . "<br>";
    }
} else {
    echo "🙁 데이터가 없습니다.";
}

📌 참고 함수

함수 설명
mysqli_fetch_assoc() 연관 배열로 결과 반환
mysqli_num_rows() 결과 행 수 확인

2. 조건부 조회

🧪 예제: 특정 이름 검색

$name = "홍길동";
$sql = "SELECT * FROM users WHERE username = '$name'";

⚠️ 직접 문자열 연결은 위험! (SQL Injection 발생 가능)
prepare()bind_param()을 사용하세요.


✅ Prepared Statement 활용

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $name);
$name = "홍길동";
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo "🔍 찾은 사용자: " . $row['username'] . "<br>";
}

3. 데이터 정렬과 제한

✅ 정렬: ORDER BY

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

✅ 개수 제한: LIMIT

$sql = "SELECT * FROM users ORDER BY id DESC LIMIT 10";

→ 최근 10개의 데이터만 가져오기


4. 데이터 삽입: INSERT

✅ 기본 SQL 문

INSERT INTO users (username, email) VALUES ('홍길동', 'hong@example.com');

✅ PHP 실행 예시

$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $username, $email);
$username = "홍길동";
$email = "hong@example.com";
$stmt->execute();

echo "✅ 삽입된 ID: " . $stmt->insert_id;

insert_id는 마지막으로 삽입된 데이터의 고유번호(ID)를 반환합니다.


5. 데이터 수정: UPDATE

✅ 기본 SQL 문

UPDATE users SET email = 'new@example.com' WHERE username = '홍길동';

✅ PHP 예시

$sql = "UPDATE users SET email = ? WHERE username = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $new_email, $username);
$new_email = "gil@example.com";
$username = "홍길동";
$stmt->execute();

echo "✏️ 수정된 행 수: " . $stmt->affected_rows;

6. 데이터 삭제: DELETE

✅ 기본 SQL 문

DELETE FROM users WHERE id = 3;

✅ PHP 예시

$sql = "DELETE FROM users WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id);
$id = 3;
$stmt->execute();

echo "🗑️ 삭제된 행 수: " . $stmt->affected_rows;

7. 데이터 집계: COUNT, AVG, SUM, GROUP BY

🧪 예제: 총 사용자 수 구하기

$sql = "SELECT COUNT(*) AS total FROM users";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
echo "총 사용자 수: " . $row['total'];

8. HTML 테이블로 데이터 출력

🧪 예제: 조회 결과 테이블로 출력

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);

echo "<table border='1'>";
echo "<tr><th>ID</th><th>이름</th><th>이메일</th></tr>";
while ($row = mysqli_fetch_assoc($result)) {
    echo "<tr>";
    echo "<td>" . $row['id'] . "</td>";
    echo "<td>" . $row['username'] . "</td>";
    echo "<td>" . $row['email'] . "</td>";
    echo "</tr>";
}
echo "</table>";

→ 이 코드를 이용하면 간단한 회원 목록 페이지도 뚝딱 만들 수 있어요!


🔐 보안을 위한 팁

항목 설명
Prepared Statement 모든 사용자 입력은 반드시 준비된 구문으로 처리
입력값 검증 filter_input() 또는 htmlspecialchars()로 필터링
에러 처리 try-catch 또는 mysqli_error()로 예외 처리
출력 이스케이프 XSS 방지용 htmlspecialchars() 사용 필수

정리 요약

기능 방법
데이터 조회 SELECT, mysqli_fetch_assoc()
데이터 삽입 INSERT, bind_param()
데이터 수정 UPDATE, affected_rows
데이터 삭제 DELETE, bind_param()
결과 수 확인 mysqli_num_rows(), COUNT(*)
보안 필수 Prepared Statement + 필터링 처리

마무리하며 😊

이제 여러분은 PHP를 이용해 데이터베이스에서 데이터를 읽고, 추가하고, 수정하고, 삭제하는 완전한 흐름을 익히셨어요!
이 기능들이 바로 게시판, 회원 관리, 쇼핑몰 등의 기능을 구성하는 핵심 기술이랍니다.

다음 시간에는 트랜잭션(TRANSACTION), 즉 여러 쿼리를 안전하게 묶어 처리하는 방법에 대해 배워보겠습니다.
실수 없는 데이터 처리, 더욱 깊이 있는 프로그래밍을 향해 한 걸음 더 나아가요! 🚀

오늘도 수고 많으셨습니다. 💻📊✨

답글 남기기