반응형
Web Development · MYDB.php
MYDB.php —
DB 접속 코드를 함수로 추출한 공통 모듈
db_connect() 한 번만 정의, 여러 페이지가 require_once로 가져다 사용
시작 오늘 분석할 코드
<?php function db_connect(){ $db_user = "root"; $db_pass = ""; $db_host = "localhost"; $db_name = "sampledb"; $db_type = "mysql"; $dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8"; try{ $pdo = new PDO($dsn, $db_user, $db_pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); }catch(PDOException $Exception){ die('오류:'.$Exception->getMessage()); } return $pdo; } ?>
1 왜 함수로 분리하나?
DRY 원칙 — 매 페이지마다 DB 접속 코드를 복사·붙여넣기 하면
· 비밀번호·서버 정보가 흩어짐 → 변경 시 모두 수정
· 같은 오류 처리를 매번 반복
· 코드 길이 늘어남
→ 한 함수로 추출하면 호출 측은 한 줄로 끝
· 비밀번호·서버 정보가 흩어짐 → 변경 시 모두 수정
· 같은 오류 처리를 매번 반복
· 코드 길이 늘어남
→ 한 함수로 추출하면 호출 측은 한 줄로 끝
반응형
2 사용 측에서
require_once("MYDB.php"); $pdo = db_connect(); // 한 줄로 PDO 객체 받음 // 이제 $pdo 자유롭게 사용 $stmh = $pdo->prepare("...");
3 더 발전시키기
// 환경 변수로 분리 (더 안전) $db_user = getenv('DB_USER') ?: 'root'; $db_pass = getenv('DB_PASS') ?: ''; // 또는 별도 config 파일 require 'config.php'; $pdo = new PDO(...); // 또는 클래스로 class MyDB { private static ?PDO $pdo = null; public static function connect(): PDO { if (self::$pdo === null) { self::$pdo = new PDO(...); } return self::$pdo; } }
핵심 한 줄 요약
db_connect()접속 + 옵션 설정 + 오류 처리를 한 함수로
DRY 원칙중복 코드 제거 → 한 곳만 수정
require_once함수 정의 파일 로드 (중복 방지)
return $pdoPDO 객체를 호출자에 전달
try/catch접속 실패 시 die로 즉시 종료
발전환경 변수, 별도 config, 싱글톤 클래스
실무프레임워크는 DI 컨테이너로 처리
반응형
'php' 카테고리의 다른 글
| PHP update.php — UPDATE 쿼리 + 세션 파기 완전 정리 (0) | 2026.06.19 |
|---|---|
| PHP updateform — 세션 ID 저장 + 기존 값 채운 수정 폼 완전 정리 (0) | 2026.06.19 |
| PHP search + list — LIKE 검색 + fetch 표 출력 완전 정리 (0) | 2026.06.19 |
| PHP form + view + PDO INSERT — 트랜잭션 처리 완전 정리 (0) | 2026.06.19 |
| PHP PDO Prepared Statement — bindValue로 SQL 인젝션 차단 완전 정리 (0) | 2026.06.19 |
왕진 블로그

댓글