>  기사  >  백엔드 개발  >  PHP PDO_php 기술에 대한 이해 요약

PHP PDO_php 기술에 대한 이해 요약

WBOY
WBOY원래의
2016-05-16 20:25:12831검색

1. PDO (PHP 데이터 개체) 확장은 PHP가 데이터베이스에 액세스하기 위한 가볍고 지속적인 인터페이스를 정의합니다. PDO 인터페이스를 구현하는 각 데이터베이스 드라이버는 정기적인 확장 형태로 고유한 특성을 표현할 수 있습니다.

주로: PDO 확장은 추상 인터페이스 계층일 뿐입니다. PDO 확장 자체는 데이터베이스 작업을 구현할 수 없습니다. 데이터베이스에 액세스하려면 특정 데이터베이스 PDO 드라이버를 사용해야 합니다.

2. PDO 방식 시작: php.ini 파일 찾기

코드 복사 코드는 다음과 같습니다.

;확장자=php_pdo.dll

앞의 세미콜론만 제거하세요(Linux 환경에서도 유사)

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에 대한 데이터를 가져오도록 설정합니다.

거래 처리의 간단한 예를 들어보세요.

코드 복사 코드는 다음과 같습니다.

/*
거래 처리
        MYSQL 테이블 엔진 MyISAM InnoDB
            필드 추가 변경 테이블 사용자 추가 돈 int null 기본값 0이 아님;
테이블 엔진 보기 테이블 사용자 생성 표시
테이블 엔진 수정 테이블 변경 사용자 엔진=InnoDB
*/

       
시도해 보세요{
​​​​ //PDO 인스턴스화
          $pdo=new PDO("mysql:host=localhost;dbname=photo","root","123456".array('3'=>'2'));
}catch(PDOException $e){
echo $e->getMessage();
}
//문자셋 설정
$sql="설정 이름 utf8";
$pdo->exec($sql);
//트랜잭션 처리 시작
$pdo->beginTransaction();
$num=250;
$sql="사용자 세트 업데이트 돈=money-{$num}, 여기서 ID =1";
$rows=$pdo->exec($sql);
       
$sql="사용자 세트 업데이트 monet=money-{$num} 여기서 id=2";
$rows =$pdo->exec($sql);
//트랜잭션 처리 종료
If($행==2){
          $pdo->commit();
}그밖에{
          $pdo->rollBack();
}
?>

(트랜잭션의 주요 특징: 원자성, 일관성, 독립성, 내구성)

4. PDO의 가장 큰 특징은 매개변수 바인딩과 프리컴파일 도입입니다

사전 컴파일은 전송과 소프트 파싱 속도라는 두 가지를 담당합니다. 사전 컴파일을 지원하려면 데이터베이스 지원 외에도 프로그램에 드라이버 지원(PDO 및 NySQLi 지원)도 필요합니다.

5. PDO 효율성 문제

(1) 데이터량이 많은 대용량 테이블에서 테스트한 결과, PDO의 CRUD 효율성은 MySql 직접 ​​연결보다 5%~15% 낮고, MySQL 직접 연결보다 편차가 큽니다.

(2) 로드의 경우 PDO가 긴 연결을 연 후에는 로드가 MySQL보다 높고 비교적 안정적입니다.

실제로 실제 애플리케이션에서는 90%의 프로그램이 데이터베이스 마이그레이션을 수행하지 않으며, 데이터베이스 마이그레이션을 수행하는 애플리케이션도 거의 없습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.