답변
PHP에서 MySQL을 사용하는 세 가지 일반적인 방법이 있습니다. 이것은 일부 기능 / 차이를 설명 하는 API 선택 : PHP를 :
- (더 이상 사용되지 않음) mysql 함수 는 절차적이고 수동 이스케이프를 사용합니다.
- MySQLi 는 객체 지향 및 절차 적 버전으로 mysql 함수를 대체합니다. 준비된 진술을 지원합니다.
- PDO (PHP Data Objects)는 다른 많은 데이터베이스 중에서 MySQL을 지원하는 일반적인 데이터베이스 추상화 계층입니다. 준비된 진술과 데이터 반환 방식에 상당한 유연성을 제공합니다.
준비된 문장과 함께 PDO를 사용하는 것이 좋습니다. 잘 설계된 API이며 필요한 경우 다른 데이터베이스 ( ODBC 를 지원하는 데이터베이스 포함 ) 로보다 쉽게 이동할 수 있습니다 .
답변
이들은 MySQL 백엔드에 액세스하는 다른 API입니다.
- MySQL은 역사적 API입니다
- mysqli는 역사적 API의 새로운 버전입니다. 더 나은 성능과 더 나은 기능 세트를 가져야합니다. 또한 API는 객체 지향적입니다.
- PDO_MySQL 은 PDO 용 MySQL입니다. PDO는 PHP에 도입되었으며 프로젝트는 모든 데이터베이스 액세스에 공통 API를 만드는 것을 목표로하므로 이론상 코드를 변경하지 않고 RDMS간에 마이그레이션 할 수 있어야합니다 (쿼리에 특정 RDBM 기능을 사용하지 않는 경우) ), 객체 지향적입니다.
따라서 어떤 종류의 코드를 생성 하느냐에 달려 있습니다. 객체 지향 레이어 또는 일반 기능을 선호하는 경우 …
내 조언은
- PDO
- MySQLi
- MySQL
또한 내 생각에 mysql API는 향후 릴리스에서 삭제 될 것입니다 PHP
.
답변
mysqli 는 mysql의 향상된 버전입니다.
PDO 확장 은 PHP에서 데이터베이스에 액세스하기위한 가볍고 일관된 인터페이스를 정의합니다. PDO 인터페이스를 구현하는 각 데이터베이스 드라이버는 데이터베이스 별 기능을 일반 확장 기능으로 노출 할 수 있습니다.
답변
특히 MySQLi 확장은 이전 MySQL 확장에 비해 다음과 같은 매우 유용한 이점을 제공합니다.
OOP 인터페이스 (절차 외에) 준비된 명령문 지원 트랜잭션 + 스토어드 프로 시저 지원 더 나은 구문 속도 개선 향상된 디버깅
PDO 확장
PHP Data Objects 확장은 데이터베이스 추상화 계층입니다. 특히 이것은 MySQL 인터페이스가 아닙니다. 많은 데이터베이스 엔진 (물론 MYSQL 포함)을위한 드라이버를 제공하기 때문입니다.
PDO는 데이터베이스 엔진이 변경 될 때이를 최소화하기 위해 코드 변경을 최소화하는 일관된 API를 제공하는 것을 목표로합니다. PDO를 사용할 때 코드는 일반적으로 사용중인 드라이버를 변경하여 많은 데이터베이스 엔진에서 “작동”합니다.
PDO는 데이터베이스 간 호환뿐만 아니라 MySQL 드라이버를 사용하는 동안 준비된 명령문, 저장 프로 시저 등을 지원합니다.