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

이 글은 주로 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으로 문의하세요.
PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?Apr 24, 2025 am 12:16 AM

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?Apr 24, 2025 am 12:16 AM

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

세션 ID 란 무엇입니까?세션 ID 란 무엇입니까?Apr 24, 2025 am 12:13 AM

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?Apr 24, 2025 am 12:12 AM

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 ​​있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)