1. PDO 소개
1) 문제점 : PHP에서 사용되는 데이터베이스 extension(oci, mysql, postgresql, mssql 등)간의 일관성이 심각하게 결여된 상태
2) 문제점의 결과 : 이러한 문제로 유지보수가 어렵고 핵심 PHP 개발자 인력이 극히 제한된 현실
3) 문제 해결 : 따라서 2003년 독일에서 열린 LinuxTag 컨퍼런스 행사에서 PHP 데이터베이스 extension 관리 담당자들이 한자리에 모여 PHP의 데이터베이스 액세스에 관련한 몇 가지 목표를 설정함
– 명확하게 정의되고 사용이 편리한 lightweight API 제공(가벼운 API 제공)
– 여러 RDMBS 라이버르러들이 공통적으로 제공하는 기능들을 통합, but 각 라이브러리가 제공하는 고급기능은 제외시키지 않음
– 추상화/호환성에 관련된 무거운 기능들을 PHP 스크립트를 통해 옵션으로 제공
4) PDO : 이러한 개념을 PHP Data Objects(PDO)라 부르기로 함
2. PDO가 필요한 이유
1) 성능 : 기존 database extension의 성공/실폐 사례를 활용. PDO의 모든 코드는 새롭게 작성되고 PHP5 환경을 기반으로 성능 개선 효과를 극대화
2) 기능 : PDO는 공통 데이터베이스 기능을 기반 환경으로 제공, but 각 RDBMS 제품의 독특한 기능을 편리하게 접근할 수 있는 환경 제공
3) 편의성 : API에 구애 받지 않고 독립적인 코드를 작성하는 한편 각 함수 호출의 역할을 명확하게 정의
4) 런타임 확장 지원 : PDO extension은 모듈러 형태로 구현되며, PHP 배포본을 다시 컴파일하거나 재설치하지 않고도 런타임
환경에서 데이타베이스 드라이버를 로드할 수 있다. 예를 들어, PDO_OCI extension은 PDO extension을 위한 오라클
데이타베이스 API를 구현가능. 그 밖에도 MySQL, PostgreSQL, ODBC, Firebird 등을 위한 드라이버가 현재 개발 중
PDO (PHP Data Objects) 는 여러가지 데이터베이스를 객체지향적으로 제어하는 방법을 표준화 시킨 것이다. PHP 5.5 버전부터는 mysql client library를 지원하지 않을 예정이며, PHP는 데이터베이스 접근을 위해 PDO를 사용하기를 권장하고 있다.
php7에서는 아직 mysqli와 PDO같이 제공하고 있으나 추후 mysql이나 mysqli 관련 데이터베이스 접속 관련 함수는 php에서 제외 될 예정이니 참고하기 바랍니다 , 현재 PDO 환경에서 정상적으로 운영이 가능한 프로그램으로는 XpressEngine, WordPress, GNUBoard(영카트). Drupal 등이 있으나, 일부 기능(플러그인)은 정상 동작하지 않을 수 있으니 이또한 참고하여 이용해 보시기 바랍니다.
결론!
PDO 관련 코드를 사용하도록 추천합니다.