워드 프레스 mysqli 및 PDO


11

WordPress 코드베이스는 mysqli 또는 PDO를 사용합니까?

PDO가 mysqli보다 우수하다는 것을 알고 있지만 mysqli도 나쁘지 않습니다. 또한 PDO를 mysqli보다 우월하게 만드는 기능 중 하나 (데이터베이스에 구애받지 않음)는 WordPress가 항상 mysql 서버를 사용하므로 WordPress에 큰 의미가 없습니다. 그러나 데이터 형식으로 매개 변수를 바인딩하는 것은 PDO가 지원하는 것이지만 mysqli는 그렇지 않으며 좋은 것입니다.

내 직감은 WordPress가 mysqli를 사용하지만 코드베이스에서 아직 그것을 볼 수 없다고 말합니다.

두 번째 질문은 WordPress가 mysqli를 사용하고 있는지, 속도 문제 때문입니까, 또는 WP가 개발되었을 때 초기에 다시 왔기 때문에 PDO가 아직 없었기 때문입니까?

답변:


7

워드 프레스는 mysql_*기능을 사용 합니다 .

http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/wp-db.php

그것은 내가 기억할 수있는 이래로 그것들을 사용했으며, 아마도 당신의 마지막 질문에 대답했을 것입니다. 레거시 코드를 고려할 것입니다. 나는 그것이 곧 언젠가 업데이트 될 것이라고 생각한다 (이 기능은 PHP 5.5에서 더 이상 사용되지 않는다고 생각한다). 어느 루트 개발이 진행 될지 모르겠습니다.

Wyck가 제공 한 Trac의 티켓으로 연결 (아래 주석에서) :

http://core.trac.wordpress.org/ticket/21663


wp-db.php에서 코드를 확인했습니다. 1133 라인에 db_connect 함수가 있으며 mysqli도 아닙니다. 혼란 스러워요. 1143 행은 이것을 분명히 가지고 있습니다; $ this-> dbh = @mysql_connect ($ this-> dbhost, $ this-> dbuser, $ this-> dbpassword, $ new_link, $ client_flags); PHP 매뉴얼 ( php.net/manual/en/function.mysql-connect.php )에 따르면, 이것은 mysqli가 아닌 mysql 코드입니다. WP는 실제로 mysql을 사용합니까?
평균 조

6
Wordpress mysql_connect는 공식적으로 감가 상각되었으므로 wp는 곧 PDO로 곧 바뀔 것입니다 (곧 1-2 년). 참조 : core.trac.wordpress.org/ticket/21663
Wyck

@AverageJoe ... 예, 말씀 드린 것처럼 WordPress는 mysql 함수를 사용합니다. Wyck처럼 PDO를 기대하고 있지만 어떤 방식으로 진행 될지 모르겠습니다.
s_ha_dum

trac 링크 Wyck에게 감사합니다. s_ha_dum 답 에이 링크 ( core.trac.wordpress.org/ticket/21663 ) 를 포함 시키고 기회가있을 때 "기억할 수있는 이래로 사용한 적이 있다면"으로가는 문법을 수정하십시오. 감사합니다
평균 Joe

약간의 충돌. 이것은 1 년 전에 작성된 것입니다. 그러나 오늘 저는 일부 버전부터 워드 프레스에 mysqli_ *가 있다고 생각합니다.
K. Kilian Lindberg

11

PHP 5.5에서 Wordpress 3.9+에 대한 업데이트- mysql_*기능이 더 이상 사용되지 않음 Wordpress는 mysqli서버에서 사용 가능한 if를 사용하여 시작했습니다 . 향후 플러그인과 코드는이를 고려하여 사용을 중단해야합니다 mysql_*. 현재 3.9에서 wordpress는 mysqli사용 가능한지 확인 하고 사용 가능한 경우이를 사용합니다. 사용하지 mysql_*않지만 가능한 한 빨리 해당 검사가 제거됩니다. 길을 따라 가면 사용할 것 같지만 PDO더 큰 프로젝트입니다.

FAQ 및 공지 사항은 다음과 같습니다.

http://make.wordpress.org/core/2014/04/07/mysql-in-wordpress-3-9/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.