PHP는 동적 및 대화형 웹 페이지를 만드는 데 널리 사용되는 오픈 소스 범용 스크립팅 언어입니다. PHP는 다음과 같은 광범위한 관계형 데이터베이스 관리 시스템에 액세스할 수 있습니다. MYSQL, SQLite , 그리고 포스트그레SQL . 그만큼 PHP 5.1 버전에서는 새로운 데이터베이스 연결 추상화 라이브러리를 제공했습니다. PHP 데이터 객체 (PDO).
PDO 란 무엇입니까?
PDO는 다음을 가리킨다. PHP 데이터 객체 는 PHP에서 데이터베이스에 액세스하기 위한 가볍고 일관된 인터페이스를 정의하는 PHP 확장입니다. 핵심 PDO 클래스와 데이터베이스별 드라이버를 제공하는 PHP 확장 세트입니다. 각 데이터베이스 드라이버는 데이터베이스 관련 기능을 PDO 인터페이스를 구현하는 일반 확장 기능으로 노출할 수 있습니다.
참고: PDO 확장 자체를 사용하여 어떤 유형의 데이터베이스 기능도 수행할 수 없습니다. 데이터베이스 서버에 액세스하려면 데이터베이스별 PDO 드라이버를 사용해야 합니다.
PDO는 주로 데이터베이스 추상화보다는 데이터 액세스 추상화에 중점을 둡니다. 그것은 제공한다 데이터 액세스 추상화 계층 즉, 어떤 데이터베이스를 사용하든 관계없이 해당 데이터베이스에서 제공하는 것과 동일한 기능을 사용하여 쿼리를 실행하고 데이터를 가져와야 한다는 의미입니다. PDO는 SQL을 다시 작성하거나 누락된 기능을 에뮬레이트하지 않으므로 데이터 추상화를 제공하지 않습니다.
PDO의 장점
PDO는 객체 작업을 위한 다양한 방법을 제공하고 작업을 훨씬 쉽게 만들어주는 준비된 명령문을 검색합니다. 이는 여러 데이터베이스에 걸쳐 균일한 액세스를 가능하게 하는 PHP의 데이터베이스 액세스 도구입니다.
PDO를 사용하면 서로 다른 데이터베이스와 플랫폼 간에 비교적 원활한 전환이 가능하며, 이는 연결 문자열을 변경하여 쉽게 수행할 수 있습니다. 데이터베이스별 구문은 지원하지 않습니다.
PDO에는 다음과 같은 몇 가지 장점이 있습니다.
PDO 확장은 PDO 드라이버용으로 작성된 모든 데이터베이스에 액세스할 수 있습니다. 다음 용도로 사용 가능한 여러 PDO 드라이버가 있습니다. FreeTDS, Microsoft SQL Server, Sybase, IBM DB2, Oracle 호출 인터페이스, Firebird/Interbase 6 , 그리고 포스트그레SQL 데이터베이스 등이 있습니다.
드라이버는 모든 시스템에서 자동으로 사용할 수 없으므로 사용 가능한 드라이버를 찾아서 필요할 때 추가해야 합니다.
데이터베이스 연결을 설정하는 데 사용할 수 있는 다양한 구문이 있습니다. 이러한 구문은 특정 데이터베이스에 따라 다릅니다. PDO를 사용하는 동안 작업은 try/catch 블록으로 래핑되어야 하며 예외 기술을 활용해야 합니다.
일반적으로 단일 연결만 생성하면 되며 이러한 연결은 데이터베이스를 null로 설정하도록 프로그래밍하여 닫힙니다.
PDO는 오류 처리를 위해 예외를 사용할 수 있도록 허용합니다. 예외를 생성하기 위해 PDO를 관련 오류 모드 속성으로 강제 설정할 수 있습니다.
세 가지 오류 모드가 있습니다. 즉, 조용한 (기본), 경고 , 그리고 예외 . 경고 및 예외는 DRY 프로그래밍에 더 유용합니다.
PDO는 일반적으로 사용되는 삽입 및 업데이트 데이터베이스 작업을 2단계 프로세스로 줄입니다.
준비 >> [바인드] >> 실행합니다.
이 방법을 통해 우리는 SQL 주입을 통한 악의적인 공격으로부터 보호하는 PDO의 준비된 명령문을 최대한 활용할 수 있습니다.
준비된 문은 이 데이터를 서버에 전송하여 여러 번 실행할 수 있는 미리 컴파일된 SQL 문입니다. 자리 표시자 내에서 사용되는 이 데이터는 SQL 주입 공격으로부터 자동으로 보호됩니다.
PDO 사용의 이점
PDO는 기본 데이터베이스 드라이버입니다. PDO를 사용하면 다음과 같은 몇 가지 이점이 있습니다.
PDO 클래스
아래에는 세 가지 PDO 클래스가 있습니다.
부락 오즈시비트
PDO가 지원하는 데이터베이스
- MySQL
- 포스트그레SQL
- 신탁
- 파이어버드
- MS SQL 서버
- 사이베이스
- 인포믹스
- IBM
- 무료TDS
- SQLite
- 큐브리드
- 4D
PDO와 MySQLi의 비교
PHP를 사용하여 데이터베이스에 액세스하려면 주로 두 가지 옵션이 있습니다. MySQLi 그리고 PDO (PHP 데이터 개체). MySQLi는 더 빠른 성능을 제공하는 기본 PHP용이지만, 숙련된 대부분의 개발자는 다양한 데이터베이스 드라이버를 지원하므로 PDO를 사용하는 것을 선호합니다. PDO와 MySQLi 사이에는 기능에 따라 아래 나열된 몇 가지 차이점이 있습니다.
특징 | PDO | MySQLi |
---|---|---|
DB 지원 | 12명의 드라이버 | MySQL만 해당 |
연결 | 쉬운 | 쉬운 |
API | 열려 있는 | OOP + 절차 |
성능 | 빠른 | 빠른 |
명명된 매개변수 | 예 | 아니요 |
객체 매핑 | 예 | 예 |
저장 프로시저 | 예 | 예 |
클라이언트측 준비문 | 예 | 아니요 |
보안 | MySQLi보다 더 안전합니다. | 안전하지만 PDO 이상은 아닙니다. |
PDO와 MySQLi 중 어느 것을 선호해야 합니까?
PDO와 MySQLi 모두 다음과 같은 장점이 있습니다.
- 앞에서 살펴본 것처럼 PDO는 12개의 서로 다른 데이터베이스 시스템에서 작동하는 반면 MySQL은 MySQL 데이터베이스에서만 작동할 수 있습니다. 따라서 프로젝트를 다른 데이터베이스로 전환하려는 경우 PDO를 사용하면 쉽게 수행할 수 있습니다. MySQLi에서는 전체 코드를 다시 작성해야 합니다.
- PDO와 MySQLi는 모두 객체 지향이지만 MySQLi는 절차적 API도 제공합니다. 둘 다 준비된 진술을 지원합니다. 준비된 명령문은 SQL 주입으로부터 보호하므로 웹 애플리케이션 보안에 중요합니다.
요구 사항
이 확장을 구축하기 위해 외부 라이브러리가 필요하지 않습니다.
설치 과정
1 단계: 여기에서 최신 XAMPP 서버를 다운로드하세요. https://www.apachefriends.org/download.html Windows, Linux, MacOS 등 다양한 플랫폼에 적합합니다.
참고: 여기서는 Windows OS에 대한 설치 프로세스만 설명합니다.
2 단계: 다음 단계에 따라 시스템에 XAMPP 서버를 설치하십시오.
3단계: 설치하려는 구성요소를 선택하고 다음 버튼을 클릭합니다.
4단계: XAMPP를 설치하려는 위치에 xampp이라는 이름의 새 폴더를 만듭니다.
5단계: 여기에서 다음을 클릭하고 앞으로 이동하세요. 여기에서 XAMPP 서버 설치가 시작됩니다.
6단계: XAMPP가 성공적으로 설치되었습니다. 마침 버튼을 클릭하세요.
7단계: 원하는 언어를 선택하세요.
8단계: 여기에서 Apache 서버와 MySQL을 실행하십시오(주어진 스크린샷에 따라).
9단계: 이제 다음에서 php.ini를 엽니다. C:/xampp/php/php.ini (XAMPP를 설치한 위치) 확장명 주석을 해제하세요. 'php_pdo_mysql.dll' 그리고 'php_pdo.dll' (MySQL 데이터베이스로 작업하는 경우) 또는 'php_pdo_oci.dll' (Oracle 데이터베이스로 작업하는 경우) 이제 데이터베이스 작업을 시작하세요. PHP 5.1 상위 버전에서는 이미 설정되어 있습니다.
PDO 작업
먼저 데이터베이스를 생성해야 하므로 여기에서 myDB라는 이름으로 데이터베이스를 생성합니다.
데이터베이스 연결
데이터베이스와 상호 작용하려면 항상 데이터베이스 연결이 필요합니다. 따라서 데이터베이스에 액세스하려면 식별자, 즉 데이터베이스 위치, 데이터베이스 이름, 사용자 이름 및 비밀번호를 알아야 합니다.
이제 메모장이나 notepad++ 등의 텍스트 편집기에서 PDO를 사용하여 데이터베이스 연결 프로그램을 생성하고 coonection.php 이름으로 저장합니다. localhost/80을 사용하여 XAMPP 서버에서 실행하십시오.
예
getMessage(); } ?>
산출
다음 URL을 사용하여 서버에서 실행하십시오. 로컬 호스트/Xampp/pdoexample/connection.php/ 또는 프로그램을 저장한 위치.
연결 오류 처리
연결 오류가 있으면 PDOException 객체가 발생합니다. 오류 조건을 처리하려는 경우 예외를 포착할 수도 있고 다음으로 설정할 수 있는 전역 예외 처리기에 맡길 수도 있습니다. set_Exception_handler() 기능.
예
이 예에서는 dbUser(user-id)가 잘못되었으므로 출력에서 볼 수 있듯이 예외가 발생합니다.
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Echo 'Successfully connected with myDB database'; } catch(Exception $e){ Echo 'Connection failed' . $e->getMessage(); } ?>
데이터베이스 연결 닫기
getMessage(); } // this command close the connection. $dbConn = null; ?>
산출