>백엔드 개발 >PHP 튜토리얼 >PHP5의 PDO 클래스에 대한 자세한 설명

PHP5의 PDO 클래스에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-19 09:14:171617검색

이 글은 주로 PHP5의 PDO 클래스에 대한 자세한 설명을 소개하고 있으니 관심 있는 분들이 참고하시면 좋을 것 같습니다.

■PDO란? POD(PHP Data Object) 확장은 PHP5에 추가되었습니다. PDO는 기본적으로 PHP6의 데이터베이스에 연결하는 데 사용됩니다. PDO가 아닌 확장은 PHP6에서 제거됩니다. 이 확장은 데이터베이스에 액세스하기 위해 PHP 내장 클래스 PDO를 제공합니다. 서로 다른 데이터베이스는 일관성 없는 데이터베이스 연결 문제를 해결하기 위해 동일한 메소드 이름을 사용합니다. Windows에서 개발하도록 구성했습니다. ■PDO의 목표는 다양한 RDBMS 라이브러리의 공통 기능을 통합하되 고급 기능을 배제하지 않는 가볍고 명확하며 편리한 API를 제공하는 것입니다.
PHP 스크립트를 통해 선택적으로 더 높은 수준의 추상화/호환성을 제공합니다.

■PDO의 특징:

성능. PDO는 기존 데이터베이스 확장의 성공과 실패에 대해 처음부터 배웠습니다. PDO의 코드는 완전히 새로운 것이므로 PHP 5의 최신 기능을 활용하기 위해 처음부터 성능을 다시 설계할 수 있는 기회가 있습니다.
능력. PDO는 공통 데이터베이스 기능을 기반으로 제공하는 동시에 RDBMS의 고유한 기능에 쉽게 액세스할 수 있도록 설계되었습니다.
간단합니다. PDO는 데이터베이스 작업을 쉽게 하도록 설계되었습니다. API는 코드에 강제로 들어가지 않으며 각 함수 호출이 수행하는 작업을 명확하게 보여줍니다.
런타임에 확장 가능. PDO 확장은 모듈식이므로 전체 PHP 프로그램을 다시 컴파일하거나 다시 설치하지 않고도 런타임 시 데이터베이스 백엔드용 드라이버를 로드할 수 있습니다. 예를 들어, PDO_OCI 확장은 PDO 확장 대신 oracle 데이터베이스 API를 구현합니다. MySQL, PostgreSQL, ODBC 및 Firebird용 드라이버도 있으며 더 많은 드라이버가 개발 중입니다. [구분자]


■PDO 설치
여기는 WINDOWS에서 개발하기 위한 PDO 확장입니다. Linux에서 설치하고 구성하려면 다른 곳을 찾아보세요.
버전 요구사항: php5.1 이상 버전은 이미 프로그램 패키지에 포함되어 있습니다. php5.0.x는 pecl.php.net에서 다운로드하여 PHP가 있는 폴더의 ext 폴더에 있는 확장 라이브러리에 배치해야 합니다. 다음, 매뉴얼에는 5.0 이전 버전은 PDO 확장을 실행할 수 없다고 나와 있습니다. 구성:
pdo를 지원하도록 php.ini 구성 파일을 수정하세요. (php.ini를 이해하지 못하는 경우 먼저 알아보세요. phpinfo() 함수를 호출할 때 표시되는 php.ini를 수정해야 합니다.) 제거 Extension=php_pdo.dll 앞의 세미콜론은 PHP 구성 파일 주석 기호입니다.
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8이 있습니다. dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll 각 확장에 해당하는 데이터베이스는 다음과 같습니다.
드라이버 이름 지원되는 데이터베이스
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird /Interbase 6
PDO_INFORMIX IBM Informix 동적 서버
PDO_MYSQL MySQL 3.x/4.x
PDO_OCI Oracle 호출 인터페이스
PDO_ODBC ODBC v3(IBM DB2, unixODBC 및 win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 및 SQLite 2 원하는 데이터베이스 사용하려면 해당 확장자 앞에 있는 주석 기호 ";"를 제거하세요.

■PDO를 사용하세요
여기서는 mysql을 설치했다고 가정합니다. 그렇지 않은 경우 먼저 설치 방법을 찾아보세요. 내 것은 mysql5.0.22이고 다른 사람들도 MySQL 4.0.26을 사용할 수 있습니다.
★데이터베이스 연결:
다음 예제를 사용하여 데이터베이스에 대한 PDO 연결을 분석합니다.


$dbms='mysql'; //데이터베이스 유형 oracle은 ODI를 사용합니다. 개발자는 다른 데이터베이스를 사용하세요. 이렇게 바꾸면 너무 많은 함수를 기억할 필요가 없습니다
$host='localhost'; //데이터베이스 호스트 이름
$dbName='test'; //사용된 데이터베이스
$user='root'; $pass=''; dsn, $user, $pass); //PDO 객체를 초기화한다는 것은 데이터베이스 연결 객체를 생성한다는 의미입니다. $dbh
echo "연결 성공
";
/*검색을 수행할 수도 있습니다. Operation

foreach ($dbh->query('Select * from FOO') as $row) {
                                                        using echo($GLOBAL); null;
} catch(PDOException $e) {
die(" 오류!: " . $e->getMessage() . "
");
}
//기본적으로 이것은 긴 연결이 아닙니다. 긴 데이터베이스 연결이 필요한 경우 마지막 매개변수: array(PDO::ATTR_PERSISTENT => true)는 다음과 같습니다:
$db = new PDO($dsn, $user, $pass, array(PDO:: ATTR_PERSISTENT => true));

?>


★데이터베이스 쿼리:
위의 쿼리를 이미 수행했으며 다음 쿼리를 사용할 수도 있습니다.
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); //속성 설정
$rs = $db->query("Select * FROM foo");
$rs->setFetchMode(PDO ::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>


위에서는 setAttribute() 메소드를 사용하였기 때문에 이 두 인자를 넣고 필드 이름은 대문자로 강제됩니다. 다음은 PDO::setAttribute()의 매개변수입니다. PDO::ATTR_CASE: 아래에 자세히 설명된 대로 열 이름을 형식으로 지정합니다(두 번째 매개변수):

PDO::CASE_LOWER: 열 이름을 소문자로 지정합니다.

PDO::CASE_NATURAL: 열 이름은 원래 방식을 따릅니다.

PDO::CASE_UPPER: 열 이름을 대문자로 지정합니다.

PDO::ATTR_ERRMODE: 오류 메시지를 표시하지 않습니다. , 오류 코드만 표시합니다.

PDO::ERRMODE_WARNING: 경고 오류를 표시합니다.

PDO::ERRMODE_EXCEPTION: 예외를 발생시킵니다.

PDO::ATTR_ORACLE_NULLS(ORACLE뿐만 아니라 다른 데이터베이스에도 유효함): ) 지정된 데이터베이스에서 반환된 PHP의 NULL 값에 해당하는 숫자 값입니다.

PDO::NULL_NATURAL: 변경 사항이 없습니다.

PDO::NULL_EMPTY_STRING: 빈 문자열은 NULL로 변환됩니다.

PDO::NULL_TO_STRING: 가져올 때 NULL은 빈 문자열로 변환됩니다.

PDO: :ATTR_STATEMENT_CLASS: PDOStatement에서 파생된 사용자 제공 명령문 클래스를 설정합니다. 영구 PDO 인스턴스와 함께 사용할 수 없습니다. array(string classname, array(mixed constructor_args)).

PDO:: ATTR_AUTOCOMMIT(OCI, Firebird 및 MySQL에서 사용 가능): 모든 단일 문을 자동 커밋할지 여부.

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(MySQL에서 사용 가능): 버퍼링된 쿼리를 사용합니다.

$rs->setFetchMode(예제에서는 PDO::FETCH_ASSOC) )는 PDOStatement::setFetchMode()입니다. 반환 유형 선언.
다음이 있습니다:
PDO::FETCH_ASSOC -- 연관 배열 형식
PDO::FETCH_NUM -- 숫자 인덱스 배열 형식
PDO::FETCH_BOTH -- 두 배열 형식을 모두 사용할 수 있으며 이는 기본값입니다.
PDO::FETCH_OBJ - - - 객체 형태에서는 이전 mysql_fetch_object()와 유사합니다

더 많은 반환 유형 선언(PDOStatement::메소드 이름)은 매뉴얼을 참조하세요.

★데이터 삽입, 업데이트, 삭제,

$db->exec("Delete FROM `xxxx_menu` where mid=43");


위 작업에 대한 간략한 요약:

쿼리 작업은 주로 PDO입니다. ::query(), PDO::exec(), PDO::prepare().
PDO::query()는 기록된 결과를 반환하는 작업, 특히 Select 작업에 주로 사용됩니다.
PDO::exec()는 삽입, 업데이트, 삭제 등 결과 집합을 반환하지 않는 작업에 주로 사용됩니다. 반환된 결과는 현재 작업의 영향을 받은 열 수입니다.
PDO::prepare()는 주로 전처리 작업입니다. 전처리에서 SQL 문을 실행하려면 $rs->execute()를 사용해야 합니다. 이 방법은 매개 변수를 바인딩할 수 있으며 단순히 설명할 수는 없습니다. 이 글을 참고하시면 매뉴얼과 기타 문서를 참고하실 수 있습니다.

결과 세트를 얻기 위한 주요 작업은 PDOStatement::fetchColumn(), PDOStatement::fetch(), PDOStatement::fetchALL()입니다.
PDOStatement::fetchColumn()은 가져오기 결과에 지정된 첫 번째 레코드의 필드입니다. 기본값은 첫 번째 필드입니다.
PDOStatement::fetch()는 레코드를 얻는 데 사용되며,
PDOStatement::fetchAll()은 모든 레코드를 하나로 가져오는 데 사용됩니다. 결과를 얻으려면 PDOStatement::setFetchMode를 사용하여 결과 집합의 유형을 설정할 수 있습니다. 필수의.

두 개의 주변 작업도 있는데, 하나는 PDO::lastInsertId() 및 PDOStatement::rowCount()입니다. PDO::lastInsertId()는 마지막 삽입 작업을 반환하고 기본 키 열 유형은 마지막 자동 증가 ID입니다.
PDOStatement::rowCount()는 주로 PDO::query() 및 PDO::prepare()의 삭제, 삽입 및 업데이트 작업의 영향을 받는 결과 집합에 사용됩니다. PDO::exec()에는 유효하지 않습니다. 방법 및 작업을 선택합니다.

관련 추천 :

PDO 메소드가 mysql에 대한 인젝션을 막을 수 있는 이유

ThinkPDO 메소드 기반의 데이터베이스 연결 작업 예

PHP에서 PDO 트랜잭션 처리 작업 예

위 내용은 PHP5의 PDO 클래스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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