2010-02-03 9 views

답변

37

사람들은

  • mysql 역사적 API
  • mysqli 역사적 API의 새로운 버전을하는 MySQL의 백엔드를 액세스 할 수있는 다른 API가 있습니다. 그것은 더 잘 수행되고 더 나은 기능을 가져야합니다. 또한 API는 객체 지향적입니다.
  • PDO_MySQL은 PDO 용 MySQL입니다. PDO가 PHP에 도입되었으며이 프로젝트는 모든 데이터베이스 액세스에 대한 공통 API를 만드는 것을 목표로합니다. 따라서 이론 상으로는 코드를 변경하지 않고 RDMS간에 마이그레이션 할 수 있어야합니다 (쿼리에서 특정 RDBM 기능을 사용하지 않는 경우).), 또한 객체 지향.

따라서 생성하려는 코드의 종류에 따라 다릅니다. 당신은 객체 지향 층 또는 일반 기능을 ... 선호하는 경우

내 조언이 될 것

  • MySQLi
  • 또한

    내 느낌 MySQL은

  • , MySQL의 API는 것

    1. PDO 향후 릴리스에서는 PHP으로 삭제 될 예정입니다.

    +1

    대단한 explaination :) thanks –

    +3

    더 이상 느끼지 않습니다. PHP7은 mysql API를 제거하고 PDO와 mysqli를 남겨두고 –

    4

    mysqli은 향상된 버전의 mysql입니다.

    PDO extension은 PHP의 데이터베이스에 액세스하기위한 가볍고 일관된 인터페이스를 정의합니다. PDO 인터페이스를 구현하는 각 데이터베이스 드라이버는 데이터베이스 확장 기능을 일반 확장 기능으로 제공 할 수 있습니다.

    +2

    수동 파일에서 복사하는 것은별로 유용하지 않습니다. – XuDing

    84

    PHP에서 MySQL을 사용하는 세 가지 방법이 있습니다.

    1. ( 사용되지 않는)에 mysql functions는 절차 적이며, 수동 이스케이프를 사용합니다.
    2. MySQLi은 객체 지향 및 절차 버전의 mysql 함수를 대체합니다. 준비된 진술을 지원합니다.
    3. PDO (PHP Data Objects)은 다른 많은 데이터베이스 중에서 MySQL을 지원하는 일반적인 데이터베이스 추상화 계층입니다. 이는 준비된 명령문을 제공하고 데이터가 리턴되는 방식에 상당한 유연성을 제공합니다.

    준비된 진술과 함께 PDO를 사용하는 것이 좋습니다. 잘 설계된 API이며 필요한 경우 다른 데이터베이스 (ODBC을 지원하는 데이터베이스 포함)로 더 쉽게 이동할 수 있습니다.

    +7

    절차 적으로 mysql _ *() 함수를 사용해야한다는 혼란이 종종 있습니다. 여기서 OO의 경우 mysqli를 사용합니다! 사실 mysqli는 mysql의 초기 (PHP 4) 구현을 완전히 대체합니다. mysqli에서는 절차 적 스타일과 OO 스타일을 모두 사용할 수 있습니다. –

    +0

    @ Patrick, 고마워. 나는 이것을 바로 잡았다. –

    7

    3 API 기능을 비교하면 table가 있습니다. 가능한 한 Mysqli를 사용하십시오. PDO 이후에 출시 된 최신 제품이며 앞으로도 더 잘 유지 될 것입니다.

    +4

    이것은 단순히 잘못된 것입니다. 'mysqli'와'PDO'는 PHP 5.0을위한 [모두 공개] (http://www.php.net/manual/en/mysqli.overview.php)되었습니다. 그리고 당신은 PDO가 유지되지 않을 것이라는 어떠한 근거도 제시하지 않았습니다. –

    +2

    나는 그것을 제안하지 않았다. PDO와 mysqli는 서로 다른 기능을 가지고 있으며 아마 둘 다 mantained 될 것입니다. PDO MAIN FEATURE는 다른 드라이버에서 일관된 API이며, mysql은 그 중 하나입니다. –

    3

    특히, MySQLi 확장 준비된 명령문 지원 거래 + 저장 프로 시저 지원 좋네요 구문 속도 개선 (절차 이외에)

    OOP 인터페이스 .. 기존의 MySQL의 확장에 비해 다음과 같은 매우 유용한 혜택을 제공 향상된 디버깅

    PDO 확장

    PHP 데이터 확장 개체는 데이터베이스 추상화 계층이다. 특히 이것은 많은 데이터베이스 엔진 (물론 MYSQL 포함)을위한 드라이버를 제공하기 때문에 MySQL 인터페이스가 아닙니다.

    PDO는 일관된 API를 제공하여 데이터베이스 엔진이 변경 될 때이를 반영하여 코드가 변경된다는 것을 의미합니다. PDO를 사용할 때 코드는 일반적으로 사용중인 드라이버를 변경하여 많은 데이터베이스 엔진에서 "제대로 작동합니다".

    데이터베이스 간 호환이 가능할뿐 아니라 PDO는 MySQL 드라이버를 사용하면서 준비된 문, 저장 프로 시저 및 기타 기능을 지원합니다.

    1

    MySQL Improved Extension을 사용하면 다양한 이점을 제공 할 수 있습니다. mysqli 확장을 사용하면 MySQL 4.1 이상에서 제공하는 기능에 액세스 할 수 있습니다.

    PHP 데이터 객체 (PDO) 확장은 PHP에서 데이터베이스에 액세스하기위한 가볍고 일관된 인터페이스를 정의합니다. PDO 인터페이스를 구현하는 각 데이터베이스 드라이버는 데이터베이스 확장 기능을 일반 확장 기능으로 제공 할 수 있습니다. PDO 확장을 사용하여 데이터베이스 기능을 수행 할 수는 없습니다. 데이터베이스 전용 PDO 드라이버를 사용하여 데이터베이스 서버에 액세스해야합니다.