본문으로 바로가기

[PHP] PHP5 Data Object(PDO) 정리

category Helloworld!/PHP 2013. 2. 5. 11:24

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 등을 위한 드라이버가 현재 개발 중

3. Windows 환경 설치
- 참고로 나는 xampp 설치하며 extension파일이 함께 설치되었으므로 이부분에 대해서 자세한 설명을 모르겠다.
- xampp에서 설정하는 방법은 다음과 같다.
1) xampp\apach\ext\php_pdo_mysql.dll가 있는 지 확인. 없다면 다운로드받아 파일을 xampp\apach\ext 경로에 저장. 

2) xampp\php\php.ini 파일에 아래 라인을 추가한다:

extension=php_pdo.dll
extension=php_pdo_mysql.dll
- 덧붙여 내가 받은 xampp1.8.1버젼은 php_pdo.dll 라인을 추가하지 않아도 실행이되었다(이유는 아직 모르겠음) 
  따라서 extension=php_pdo_mysql.dll만 추가할것. (주석을 취소할것 / ; <- 세미콜론을 없앤다는 것.)

4. PDO로 연결
$user = 'username';
$pass = 'password';

try {
    $dbh = new PDO(" mysql:host="hostname;dbname=databasename"," $user,="" $pass);="" }="" catch="" (pdoexception="" $e)="" {="" echo="" "failed="" to="" obtain="" database="" handle="" "="" .="" $e-="">$user = 'DB접속ID넣음';
$pass = '비밀번호넣음';

try {
    $dbh = new PDO("mysql:host=hostaddress넣기;dbname=DB이름넣기", $user, $pass);
} catch (PDOException $e) {
    echo "Failed to obtain database handle " . $e->getMessage();
}

* 참고 사이트 
- 이 사이트 내용을 간략 및 수정했다 (http://blog.naver.com/s9712094?Redirect=Log&logNo=140015410359)
- mysql PDO 설명 : 제일 첫번째 링큰는 oracle에 대한 설명이다. (http://namsil78.tistory.com/23)