1. PDO (PHP 데이터 개체) 확장은 PHP가 데이터베이스에 액세스하기 위한 가볍고 지속적인 인터페이스를 정의합니다. PDO 인터페이스를 구현하는 각 데이터베이스 드라이버는 정기적인 확장 형태로 고유한 특성을 표현할 수 있습니다.
주로: PDO 확장은 추상 인터페이스 계층일 뿐입니다. PDO 확장 자체는 데이터베이스 작업을 구현할 수 없습니다. 데이터베이스에 액세스하려면 특정 데이터베이스 PDO 드라이버를 사용해야 합니다.
2. PDO 방식 시작: php.ini 파일 찾기
3. PDO 사전 정의 클래스:
PDO에는 사전 정의된 세 가지 클래스인 PDO, PDOStatement, PDOException이 포함되어 있습니다.
(1) PDO 클래스: PHP와 데이터베이스 간의 연결을 나타냅니다
PDO: 생성자, 새 PDO 객체 생성
beginTransaction: 트랜잭션 시작
커밋: 거래 제출
errorCode: 오류 코드가 있는 경우 데이터베이스에서 오류 코드를 반환합니다.
errorInfo: 데이터베이스의 오류 정보가 포함된 배열을 반환합니다.
Exec: SQL 문을 실행하고 영향을 받은 행 수를 반환합니다.
GetAttribute: 데이터베이스 연결 속성을 반환합니다.
LastInsertId: 데이터베이스에 삽입된 최신 행(ID)을 반환합니다.
준비: 실행할 SQL 문을 준비하고 해당 문이 실행된 후 결합 결과 집합을 반환합니다.
쿼리: SQL 문을 실행하고 결과 집합을 반환합니다.
롤백: 트랜잭션 롤백
SetAttribute: 데이터베이스 연결 속성을 설정합니다.
(2) PDOStatement 클래스: 전처리 문과 해당 문이 실행된 후의 결합 결과 집합을 나타냅니다.
bindColomn: 결과 집합 출력 열에 PHP 변수 바인딩
bindParam: PHP에서 준비된 명령문의 매개변수에 변수를 바인딩합니다.
bindValue: 처리문의 매개변수에 값을 바인딩합니다.
closeCursor: 명령문을 다시 실행할 수 있도록 커서를 닫습니다.
cloumnCount: 결과 집합의 열 수를 반환합니다
ErrorCode: 문에 오류 코드가 있으면 반환합니다.
errorInfo:
문에서 오류 정보가 포함된 배열을 반환합니다.실행: 준비된 명령문을 실행합니다
가져오기: 결과 집합에서 행을 가져옵니다
fetchAll: 결과 집합의 모든 행을 포함하는 배열 가져오기
fetchColomn: 결과 집합의 특정 열의 데이터를 반환합니다.
GetAttribute: PDOStatement 속성을 반환합니다.
GetColomnMeta: 결과 집합의 열 구조를 반환합니다.
NextRowset: 다음 결과 집합을 반환합니다.
RowCount: SQL 문이 실행된 후 영향을 받은 행 수를 반환합니다.
SetAttribute: PDOStatement 속성 설정
SetFetchMode: PDOStatement에 대한 데이터를 가져오도록 설정합니다.
거래 처리의 간단한 예를 들어보세요.
(트랜잭션의 주요 특징: 원자성, 일관성, 독립성, 내구성)
4. PDO의 가장 큰 특징은 매개변수 바인딩과 프리컴파일 도입입니다
사전 컴파일은 전송과 소프트 파싱 속도라는 두 가지를 담당합니다. 사전 컴파일을 지원하려면 데이터베이스 지원 외에도 프로그램에 드라이버 지원(PDO 및 NySQLi 지원)도 필요합니다.
5. PDO 효율성 문제
(1) 데이터량이 많은 대용량 테이블에서 테스트한 결과, PDO의 CRUD 효율성은 MySql 직접 연결보다 5%~15% 낮고, MySQL 직접 연결보다 편차가 큽니다.
(2) 로드의 경우 PDO가 긴 연결을 연 후에는 로드가 MySQL보다 높고 비교적 안정적입니다.
실제로 실제 애플리케이션에서는 90%의 프로그램이 데이터베이스 마이그레이션을 수행하지 않으며, 데이터베이스 마이그레이션을 수행하는 애플리케이션도 거의 없습니다.