약 5분
읽기 설정
글자 크기
줄 간격
글꼴
3.4 PDO를 통한 SQL 실행
PHP Data Objects (PDO)는 PHP에서 데이터베이스와 상호작용할 수 있는 안정적이고 유연한 방법을 제공합니다. SQL 명령을 안전하게 실행할 수 있도록 지원하며, 다양한 데이터베이스 관리 시스템을 지원합니다. 이번 섹션에서는 PDO를 사용하여 SQL을 실행하는 방법을 배우겠습니다. 웹 개발 흐름을 다시 한번 짚어보면, 데이터는 브라우저 → 웹서버 → PHP 스크립트 → 데이터베이스 → 다시 서버를 거쳐 브라우저로 전달됩니다. 이러한 흐름 속에서 PDO가 어떻게 활용되는지 살펴보겠습니다.
1. PDO 연결 설정
먼저, MySQL 데이터베이스에 PDO를 사용하여 연결하는 방법을 알아보겠습니다. 아래 예제는 데이터베이스에 연결하는 코드입니다.
// 데이터베이스 연결 설정
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
$username = 'root';
$password = '';
try {
$pdo = new PDO($dsn, $username, $password);
// 에러 모드 설정
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
위 코드는 PDO 객체를 생성하여 MySQL 데이터베이스에 연결하는 기본 구조입니다. 연결에 실패할 경우, 예외를 통해 에러 메시지를 출력하도록 설정하였습니다.
2. SQL 실행 방법
PDO를 사용하여 SQL을 실행하는 과정은 크게 준비단계, 실행, 결과 처리로 나누어집니다. 예를 들어, 사용자의 데이터를 데이터베이스에 삽입하는 과정을 보겠습니다.
$name = 'John Doe';
$email = 'john@example.com';
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
위의 예제에서 준비된 문(prepared statement)을 사용하여 SQL 인젝션 공격으로부터 보호하는 방법을 확인할 수 있습니다. bindParam 메서드를 통해 변수의 값을 안전하게 바인딩합니다.
3. 데이터 읽기
SELECT 쿼리를 사용하여 데이터를 읽어오는 방법도 살펴보겠습니다. 다음은 사용자 정보를 조회하는 예제입니다.
$sql = 'SELECT * FROM users';
$stmt = $pdo->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user) {
echo 'Name: ' . $user['name'] . ', Email: ' . $user['email'] . "\n";
}
위 코드는 데이터베이스에서 사용자의 모든 정보를 조회하고 배열 형식으로 출력하는 예시입니다. fetchAll 메서드를 사용하여 결과를 배열로 받습니다.
실습
이제 위의 예제들을 바탕으로 회원가입 기능을 구현해보세요. 사용자의 이름과 이메일을 받아 데이터베이스에 저장하고, 회원 목록을 출력하는 프로그램을 작성해보세요. 이 과정에서 에러 처리 및 예외 상황을 고려하여 코드의 안정성을 높이는 것도 잊지 마세요.
정리
이번 섹션에서는 PDO를 통해 안전하게 SQL을 실행하는 방법에 대해 배웠습니다. 데이터베이스와의 연결, SQL 명령 실행, 결과 처리 방법을 통해 CRUD 기능을 구현할 수 있는 기초 지식을 쌓았습니다. 다음 단계에서는 이 지식을 바탕으로 실을 적용하여 실제 프로젝트를 만들어가는 과정으로 넘어가겠습니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.