저는 PostgreSQL 데이터베이스를 사용하여 프로젝트를 시작하고 있습니다. mysql_ * 함수가 사용되지 않으며 MySQL 데이터베이스와 함께 PDO를 사용하는 것이 가장 좋습니다.하지만 PostgreSQL은 어떻습니까? pg_ * 함수는 더 이상 사용되지 않거나 더 이상 사용되지 않을 것입니까? PDO 나 pg_ *가 포스트그레스와 대화하는 데 선호되는 방법입니까? 하나가 다른 것보다 더 빠르고 안전합니까?PHP는 pg_ * 함수 또는 PDO를 사용해야합니까?
답변
ext/mysql은 고대이고 ext/mysqli보다 훨씬 우수한 후계자이기 때문에 더 이상 사용되지 않습니다.
ext/pgsql은 더 이상 사용되지 않고 후임이 없으며, 원래의 Postgres 데이터베이스 인터페이스로 사용할 수 있습니다.
PDO는 동일한 API에서 많은 다른 데이터베이스 드라이버를 추상화하는 통합 인터페이스입니다. 사용할 수있는 인터페이스입니다. 원시 pgsql 인터페이스는 PDO가 추상화 된 인터페이스에서 지원하지 않는 Postgres에 특정한 특정 기능을 제공 할 수도 있고 제공하지 않을 수도 있습니다. pgsql API는 원할 경우 "메탈에 더 가깝습니다". 필요한 경우 장점이 될 수 있습니다. 그러나 필요한 특정 사실을 알지 못하면 차이점을 많이 찾지 못할 것입니다.
개인적으로 나는 PDO를 좋아합니다. 확실하지 않은 경우 몇 가지 간단한 테스트 스크립트를 작성하고 어느 쪽이 더 편하다고 느끼고 어떤 문서가 더 잘 이해하는지에 따라 결정할 것입니다. 즉, 추상화 PDO가 제공하는 다른 데이터베이스로보다 쉽게 전환 할 수있는 유연성과 같은 다른 결정 요소가없는 경우가 아닙니다.
+1 "가까운 금속". 전에 들어 본 적이없는 :) – hek2mgl
아니요, pg_*
기능 세트는 더 이상 사용되지 않습니다. 그러나 PDO를 사용하면 데이터베이스 유형을 한 번 변경할 수 있습니다. 이러한 자유는 동일한 기능/방법을 사용하여 서로 다른 여러 데이터베이스에 액세스함으로써 성취됩니다. 데이터베이스 특정 작업은 사용중인 PDO 드라이버에 의해 처리됩니다.
mysql
확장 프로그램은 이 아닌 mysqli
으로 대체되었습니다. 원래 mysql
확장 프로그램에서는 준비된 문이나 저장 프로 시저 호출 기능을 제공하지 않았기 때문입니다. 개발자는 새롭고 개선 된 mysql 확장을 작성하기로 결정하고 이전 확장을 완전히 대체했습니다.
미래에 데이터베이스를 전환 할 계획이 아니라면 OOP 접근 방식이나 구식 기능 호출 방식을 사용하는 것이 더 편한지 여부에 달려 있습니다. 앱의 보안은 PDO/pg_ * 기능에 의존하지 않고 두 스타일 모두에서 사용할 수있는 준비 문 (http://be.php.net/manual/en/pdo.prepare.php)과 같은 안전한 프로그래밍 방식을 사용하는 사용자에게 달려 있습니다.
또한 레코드 집합 캐싱 (http://phplens.com/adodb/caching.of.recordsets.html) 및 기타 유용한 기능을 지원하는 ADOdb와 같은 추상화 계층을 사용할 수도 있습니다.
이 프로젝트의 RDBMS로 PostgreSQL을 사용하는 것을 알고 있다면 PDO가 아닌 Postgresql 확장이 가장 잘 처리됩니다.
PDO는 본질적으로 추상화 레이어입니다. 일일이 pg_ 기능을 사용하면 더 나은 성능을 얻을 수 있습니다. 그러나 가능하다면 더 나은 아이디어를 얻으려면 몇 가지 벤치 마크를 수행하십시오.
추천 도서 : PDO vs pg_* functions.
- 1. PDO 대 pg_ * 기능
- 2. 함수에서 PDO를 사용해야합니까?
- 3. 어떻게 함수에서 PDO를 사용해야합니까?
- 4. OOP 방식으로 PHP PDO를 사용해야합니까?
- 5. 함수 클래스 또는 함수 네임 스페이스를 사용해야합니까?
- 6. PDO를 사용할 때 addslashes 기능을 사용해야합니까?
- 7. mysqli 또는 PDO를 배워야합니까?
- 8. 항상 MySQL을 사용하는 프로젝트는 PDO를 사용해야합니까?
- 9. 클래스 기반 또는 함수 기반 뷰를 사용해야합니까?
- 10. OOP에서 하나의 함수 또는 객체를 사용해야합니까?
- 11. 보고서에 함수 또는 매개 변수를 사용해야합니까?
- 12. PHP는 어디에서 사용해야합니까? While 루프
- 13. 포크 또는 스레드를 사용해야합니까?
- 14. PHP는 - 참조 함수 인수
- 15. PHP는 날짜() 함수
- 16. PHP는 객체를 기본 데이터 유형으로 사용해야합니까?
- 17. 업데이트 기능, 바인딩, 배열 및 PDO를 만드는 PHP는
- 18. PHP는 mysql을 PDO를 사용하려고 후 내 쿼리가 실행되지 않습니다
- 19. 채팅 웹 사이트에 PHP 또는 JSP를 사용해야합니까?
- 20. PHP는 : 또는 문제
- 21. MySQL의 또는 PHP는 열
- 22. PDO를 사용할 수 없을 때 MySQL을 사용할 때, MDB2 또는 배 DB_DataObject를 사용해야합니까?
- 23. PHP는 날짜 함수 결과가 잘못
- 24. PHP는 날짜 함수 -1 월호
- 25. 이 반복 또는 Jquery 반복 함수 setInterval 함수를 사용해야합니까?
- 26. C++에서 std :: function 또는 함수 포인터를 사용해야합니까?
- 27. SQL 서버 또는 C#에서 "사용자 정의 함수"를 사용해야합니까?
- 28. PHP 내에서 MySQL의 오늘 날짜 함수 또는 curdate()를 사용해야합니까?
- 29. Clojure에서 인수를 확인하는 데 함수 또는 매크로를 사용해야합니까?
- 30. p가 함수 포인터 인 경우 p (..) 또는 (* p) (..)를 사용해야합니까?
PHP [PDO_PGSQ] (http://pk1.php.net/manual/en/ref.pdo-pgsql.php)는 해당 내용입니다. –
이 질문은 정확히 링크 된 질문과 중복되는 내용이 아닙니다. pq_ *가 msql_ * 함수처럼 사용되지 않을지 여부. 질문이나 대답은 연결된 질문/답변에서 다루지 않습니다. – tinlyx