그들은 똑같은 것처럼 보이지만 아직 다릅니다. 어떤 것이 있는지 모르겠습니다. PDO를 new PDO()
으로 사용하고 prepare()
및 query()
메서드를 사용하여 데이터베이스에서 데이터를 가져올 수 있습니다. 따라서, 이것이 확장 목록에 언급 된 PDO
이라면 정확히 (laymans 용어로) pdo_mysql과 mysqlnd는 무엇입니까?PHP에서 Mysqlnd, PDO 및 PDO_Mysql 확장의 차이점은 무엇입니까?
답변
PDO와 함께 mysql 데이터베이스를 사용하려면 PDO_Mysql이 필요합니다. 그것은 운전사입니다.
Mysqld는 PDO 또는 mysqli를 사용하여 액세스하는 MySQL 서버입니다.
Mysqlnd는 MySQL 서버와 통신하는 라이브러리/드라이버이며, PDO와 mysqli는 모두이를 사용합니다.
이 질문에 대답한다면, 맞아. 공식 문서의 인용문을 보여주십시오. 또한, OP는'mysqld'가 아니라'mysqlnd'에 대해서 묻습니다. 지금까지 말한 내용은 기껏해야 한계가 있으며 단지 논평 일뿐입니다. –
PDO 자체는 PHP가 제공하는 database abstraction layer입니다.
PDO에 관계없이 사용중인 데이터베이스 것을 의미 데이터 액세스 추상화 계층을 제공합니다, 당신은을 사용 : 이것은 당신이하지 생각하지만, PHP가 the PDO documentation에 있음을 지 웁니다 무엇을 확실히 의미하지 않을 수 있습니다 쿼리를 발행하고 데이터를 가져 오는 동일한 기능. PDO는 데이터베이스 추상화를 제공하지 않습니다. SQL을 재 작성하거나 누락 된 기능을 에뮬레이션하지 않습니다. 해당 기능이 필요한 경우 완전한 추상화 레이어를 사용해야합니다.
시스템에 따라 you might need to enable its driver을 사용할 수 있습니다. (하지만 그렇지 않을 수도 있습니다.)
다양한 데이터베이스 (MySQL, Oracle, PostgreSQL 등)와 함께 PDO를 사용할 수 있지만 사용할 데이터베이스 유형에 따라 enable the specific driver이 필요합니다. 이전에 링크 된 동일한 PDO 소개 문서에서 :
PDO 확장을 사용하여 데이터베이스 기능을 수행 할 수는 없습니다. 데이터베이스 전용 PDO 드라이버를 사용하여 데이터베이스 서버에 액세스해야합니다.
pdo_mysql 중 하나입니다. 이 드라이버는 PDO 인터페이스를 구현합니다. 즉, prepare()
, query()
등 과 특정 데이터베이스을 사용할 수 있습니다.
mysqlnd
은 PHP와 MySQL 간의 통신을 처리합니다. PHP 버전 5.4부터 모든 MySQL 확장 (예 : pdo_mysql
)의 기본 드라이버 였으므로 지원되는 PHP 버전을 사용하고 있다면 아마도 사용하고있을 것입니다. 그러나 그것은 의사 소통을 다루는 장면 뒤에서 작동합니다. mysqlnd
기능을 사용하지 않습니다. the mysqlnd
documentation의 "그렇지 무엇"섹션에서 :
,이 PHP 프로그래머에 새로운 API를 제공하지 않는 것이 중요합니다. MySQL 데이터베이스 연결을위한 프로그래머 API는 MySQL 확장, mysqli 및 PDO MYSQL에 의해 제공됩니다. 이 확장은 이제 MySQL Native Driver의 서비스를 사용하여 MySQL 서버와 통신 할 수 있습니다. 따라서 MySQL Native Driver를 API로 생각하지 않아야합니다.
참고 : http://php.net/manual/en/mysqlinfo.api.choosing.php 및 http://php.net/manual/en/mysqlinfo.library.choosing.PHP는 – mario
나는 그것을 실제로 읽었습니다, 나는 여전히 그들 중 세 사이의 연결 (말장난 의도 없음)을 만들 수 없다 –
나는 생각한다 * (내가 틀렸다면 누군가는 나를 고쳐 줄 것이라고 확신한다) 그 mysqlnd PHP를 mysql에 연결하는 실제 드라이버이다. PDO와 mysqli는 mysqlnd를 통해 mysql 서버로 데이터를 보내는 API이다. – aynber