MySQLi 개요

이 섹션에서는 MySQL 데이터베이스와 상호 작용해야 하는 PHP 애플리케이션을 개발할 때 사용할 수 있는 옵션을 소개합니다.

API란 무엇입니까?

API(응용 프로그래밍 인터페이스)는 원하는 작업을 수행하기 위해 응용 프로그램이 호출해야 하는 클래스, 메서드, 함수 및 변수를 정의합니다. 데이터베이스와 통신해야 하는 PHP 애플리케이션의 경우 필요한 API는 일반적으로 PHP 확장을 통해 노출됩니다.

API는 절차적 또는 객체 지향적일 수 있습니다. 절차적 API를 사용하면 함수를 호출하여 작업을 수행하고 객체 지향 API를 사용하면 클래스를 인스턴스화한 다음 결과 개체에 대한 메서드를 호출합니다. 둘 중 후자가 더 현대적이고 더 잘 구성된 코드로 이어지기 때문에 일반적으로 선호되는 인터페이스입니다.

MySQL 서버에 연결해야 하는 PHP 애플리케이션을 작성할 때 사용할 수 있는 몇 가지 API 옵션이 있습니다. 이 문서에서는 사용 가능한 항목과 애플리케이션에 가장 적합한 솔루션을 선택하는 방법에 대해 설명합니다.

Connector란 무엇입니까?

MySQL 문서에서 커넥터라는 용어는 애플리케이션이 MySQL 데이터베이스 서버에 연결할 수 있도록 하는 소프트웨어를 나타냅니다. MySQL은 PHP를 포함한 다양한 언어에 대한 커넥터를 제공합니다.

PHP 애플리케이션이 데이터베이스 서버와 통신해야 하는 경우 데이터베이스 서버에 연결, 데이터베이스 쿼리 및 기타 데이터베이스 관련 기능과 같은 활동을 수행하기 위해 PHP 코드를 작성해야 합니다. 소프트웨어는 PHP 응용 프로그램이 사용할 API를 제공하고 응용 프로그램과 데이터베이스 서버 간의 통신을 처리하는 데 필요하며 필요한 경우 다른 중간 라이브러리를 사용할 수도 있습니다. 이 소프트웨어를 사용하면 응용 프로그램이 데이터베이스 서버에 연결할 수 있으므로 일반적으로 커넥터라고 합니다.

드라이버란?

드라이버는 특정 유형의 데이터베이스 서버와 통신하도록 설계된 소프트웨어입니다. 드라이버는 MySQL 클라이언트 라이브러리 또는 MySQL 네이티브 드라이버와 같은 라이브러리를 호출할 수도 있습니다. 이 라이브러리는 MySQL 데이터베이스 서버와 통신하는 데 사용되는 저수준 프로토콜을 구현합니다.

예를 들어, PHP 데이터 객체(PDO) 데이터베이스 추상화 계층은 여러 데이터베이스 전용 드라이버 중 하나를 사용할 수 있습니다. 사용 가능한 드라이버 중 하나는 PDO MYSQL 드라이버로, 이를 통해 MySQL 서버와 인터페이스할 수 있습니다.

때때로 사람들은 커넥터와 드라이버라는 용어를 같은 의미로 사용하기 때문에 혼동될 수 있습니다. MySQL 관련 문서에서 driver라는 용어는 커넥터 패키지의 데이터베이스 특정 부분을 제공하는 소프트웨어용으로 예약되어 있습니다.

확장(Extension)이란 무엇입니까?

PHP 문서에서 확장이라는 또 다른 용어를 접하게 될 것입니다. PHP 코드는 핵심 기능에 대한 선택적 확장과 함께 핵심으로 구성됩니다. mysqli 확장 및 PDO MySQL 드라이버 확장과 같은 PHP의 MySQL 관련 확장은 PHP 확장 프레임워크를 사용하여 구현됩니다.

확장은 일반적으로 해당 기능을 프로그래밍 방식으로 사용할 수 있도록 PHP 프로그래머에게 API를 노출합니다. 그러나 PHP 확장 프레임워크를 사용하는 일부 확장은 API를 PHP 프로그래머에게 노출하지 않습니다.

예를 들어 PDO MySQL 드라이버 확장은 PHP 프로그래머에게 API를 노출하지 않지만 그 위에 있는 PDO 계층에 대한 인터페이스를 제공합니다.

API와 확장이라는 용어는 같은 의미로 받아들여서는 안 됩니다. 확장이 반드시 API를 프로그래머에게 노출하지 않을 수도 있기 때문입니다.

MySQL을 사용하기 위한 주요 PHP API 제품은 무엇입니까?

MySQL 데이터베이스 서버 연결을 고려할 때 두 가지 주요 API 옵션이 있습니다.

  • PHP의 mysqli 확장
  • PHP 데이터 객체(PDO)

각각의 장점과 단점이 있습니다. 다음 논의는 각 API의 주요 측면에 대한 간략한 소개를 제공하는 것을 목표로 합니다.

PHP의 mysqli 확장이란 무엇입니까?

mysqli 확장 또는 때때로 알려져 있는 MySQL 개선 확장은 MySQL 시스템 버전 4.1.3 이상에서 발견된 새로운 기능을 활용하기 위해 개발되었습니다. mysqli 확장은 PHP 버전 5 이상에 포함되어 있습니다.

mysqli 확장에는 많은 이점이 있으며 mysql 확장에 대한 주요 개선 사항은 다음과 같습니다.

  • 객체 지향 인터페이스
  • 준비된 명령어 지원
  • 다중 명령문 지원
  • 거래(Transactions) 지원
  • 향상된 디버깅 기능

확장은 객체 지향 인터페이스와 마찬가지로 절차적 인터페이스도 제공합니다.

mysqli 확장은 PHP 확장 프레임워크를 사용하여 구축되며 소스 코드는 ext/mysqli 디렉토리에 있습니다.

mysqli 확장에 대한 추가 정보는 MySQLi를 참조하십시오.

PDO 란 무엇입니까?

PHP Data Objects 또는 PDO는 특별히 PHP 애플리케이션을 위한 데이터베이스 추상화 계층입니다. PDO는 애플리케이션이 연결할 데이터베이스 서버 유형에 관계없이 PHP 애플리케이션에 일관된 API를 제공합니다. 이론적으로 PDO API를 사용하는 경우 사용한 데이터베이스 서버를 Firebird에서 MySQL로 전환할 수 있으며 PHP 코드를 약간만 변경하면 됩니다.

데이터베이스 추상화 계층의 다른 예로는 Java 애플리케이션용 JDBC와 Perl용 DBI가 있습니다.

PDO는 깨끗하고 단순하며 이식 가능한 API와 같은 장점이 있지만 가장 큰 단점은 최신 버전의 MySQL 서버에서 사용할 수 있는 고급 기능을 모두 사용할 수 없다는 것입니다. 예를 들어, PDO는 다중 명령문에 대한 MySQL의 지원을 사용하는 것을 허용하지 않습니다.

PDO는 PHP 확장 프레임워크를 사용하여 구현되며 소스 코드는 ext/pdo 디렉토리에 있습니다.

PDO에 대한 자세한 내용은 PDO를 참조하십시오.

PDO MYSQL 드라이버는 무엇입니까?

PDO MYSQL 드라이버는 적어도 PHP 프로그래머의 관점에서 볼 때 그러한 API가 아닙니다. 사실, PDO MYSQL 드라이버는 PDO 자체 아래 계층에 위치하며 MySQL 관련 기능을 제공합니다. 프로그래머는 여전히 PDO API를 호출하지만 PDO는 PDO MYSQL 드라이버를 사용하여 MySQL 서버와 통신을 수행합니다.

PDO MYSQL 드라이버는 사용 가능한 여러 PDO 드라이버 중 하나입니다. 사용 가능한 다른 PDO 드라이버에는 Firebird 및 PostgreSQL 데이터베이스 서버용 드라이버가 포함됩니다.

PDO MYSQL 드라이버는 PHP 확장 프레임워크를 사용하여 구현됩니다. 소스 코드는 ext/pdo_mysql 디렉토리에 있습니다. PHP 프로그래머에게 API를 노출하지 않습니다.

PDO MYSQL 드라이버에 대한 자세한 내용은 MySQL(PDO)을 참조하십시오.

PHP의 MySQL 네이티브 드라이버는 무엇입니까?

MySQL 데이터베이스 서버와 통신하기 위해 mysqli와 PDO MYSQL 드라이버는 각각 필요한 프로토콜을 구현하는 저수준 라이브러리를 사용합니다. 과거에는 유일하게 사용 가능한 라이브러리가 libmysqlclient로 알려진 MySQL 클라이언트 라이브러리였습니다.

그러나 libmysqlclient가 원래 C 애플리케이션을 염두에 두고 설계되었기 때문에 libmysqlclient가 제공하는 인터페이스는 PHP 애플리케이션과의 통신에 최적화되지 않았습니다. 이러한 이유로 MySQL 네이티브 드라이버인 mysqlnd는 PHP 애플리케이션용 libmysqlclient의 대안으로 개발되었습니다.

mysqli 확장과 PDO MySQL 드라이버 모두 libmysqlclient 또는 mysqlnd를 사용하도록 개별적으로 구성할 수 있습니다. mysqlnd는 PHP 시스템에서 활용하도록 특별히 설계되었기 때문에 libmysqlclient에 비해 많은 메모리와 속도 향상이 있습니다. 이러한 개선 사항을 활용하는 것이 좋습니다.

MySQL 네이티브 드라이버는 PHP 확장 프레임워크를 사용하여 구현됩니다. 소스 코드는 ext/mysqlnd에 있습니다. PHP 프로그래머에게 API를 노출하지 않습니다.

기능 비교

다음 표는 PHP에서 MySQL에 연결하는 주요 메서드의 기능을 비교합니다.

PHP용 MySQL API 옵션 비교

  PHP's mysqli Extension PDO (Using PDO MySQL Driver and MySQL Native Driver)
PHP 버전 도입 5.0 5.0
MySQL 개발 현황 적극적인 개발 적극적인 개발
API는 문자 집합을 지원합니다. Yes Yes
API supports server-side Prepared Statements Yes Yes
API supports client-side Prepared Statements No Yes
API는 저장 프로시저를 지원합니다. Yes Yes
API는 다중 명령문을 지원합니다. Yes Most
모든 MySQL 4.1+ 기능 지원 Yes Most