여러가지 데이터베이스를 제어하는 방법을 표준화시킨 것.(PHP 확장모듈) PDO를 쓰면 같은 방법으로 여러 DB를 제어할 수 있음.
동일한(또는 유사한) SQL 문을 고효율로 반복적으로 실행하는 데 사용되는 기능.
PDO는 Prepared Statement를 제공하여 SQL을 미리 데이터베이스에서 컴파일 해두고, parameter 값만 바꿔 처리 함으로써 성능 향상.
준비된 문은 기본적으로 아래와 같이 작동.
- Prepare(준비) : SQL문 템플릿이 완성돼 데이터베이스로 전송된다. 매개변수라 하는 특정 값은 지정되지 않은 상태로 남는다("?" 레이블이 지정됨). 예를 들어 INSERT INTO table VALUES(?, ?, ?) 형태로 사용한다.
- DB는 SQL문 템플릿에서 쿼리 최적화를 파싱, 컴파일 및 수행하며 결과를 실행하지 않고 저장함.
- Execute(실행) : 나중에 응용 프로그램은 값을 매개변수에 바인딩하고 DB는 명령문을 수행함. 응용 프로그램은 다른 값으로 원하는 만큼 문(Statements)을 실행할 수 있음.
장점
- 준비된 명령문은 쿼리에 대한 준비가 한 번만 수행되므로 구문 분석 시간이 줄어듦.(Statements가 여러 번 실행되더라도)
- 바인딩된 매개변수는 전체 쿼리가 아닌 매번 매개변수만 보내야 하므로 서버의 대역폭을 최소화 함.
- 준비된 명령문은 나중에 다른 프로토콜을 사용해 전송되는 매개변수 값을 올바르게 이스케이프할 필요가 없기 때문에, SQL 삽입에 대해 매우 유용함. 원본 Statements 템플릿이 외부 입력에서 파생되지 않은 경우 SQL 주입이 발생할 수 없음.
참고
https://onlyfor-me-blog.tistory.com/311
https://opentutorials.org/module/6/5155