WordPress mysqli i PDO


11

Czy baza kodu WordPress używa mysqli lub PDO?

Wiem, że PDO jest lepszy od mysqli, ale mysqli też nie jest zły. Dodatkowo jedna z cech tego, co sprawia, że ​​PDO jest lepsza od mysqli (czyli agnostyka bazy danych), nie znaczy wiele dla WordPressa, ponieważ WordPress zawsze będzie korzystał z serwera mysql. Ale wiązanie paramów z typami danych jest czymś, co PDO obsługuje, ale mysqli tego nie robi i to dobrze.

Moje odwagi mówią, że WordPress używa mysqli, ale nie widziałem go jeszcze w bazie kodu.

Moje drugie pytanie brzmi: czy WordPress używa mysqli, czy to z powodu problemów z prędkością, czy też z powodu wcześniejszych czasów (kiedy opracowywano WP), PDO jeszcze nie było?

Odpowiedzi:


7

WordPress korzysta z mysql_*funkcji .

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

Wykorzystuje je odkąd pamiętam, co prawdopodobnie odpowiada na twoje ostatnie pytanie. To jest to, co uważam za starszy kod. Podejrzewam, że wkrótce zostanie zaktualizowany (te funkcje były przestarzałe od wersji PHP 5.5, jak sądzę). Nie wiem, który kierunek rozwoju pójdzie.

Link do biletu w Trac, dzięki uprzejmości Wyck (z komentarza poniżej):

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


Sprawdziłem kod na wp-db.php. W linii 1133 ma funkcję db_connect i zgodnie z nią nie jest to nawet mysqli. Jestem zmieszany. linia 1143 wyraźnie to ma; $ this-> dbh = @mysql_connect ($ this-> dbhost, $ this-> dbuser, $ this-> dbpassword, $ new_link, $ client_flags); i zgodnie z podręcznikiem PHP ( php.net/manual/en/function.mysql-connect.php ) jest to kod mysql, a nie mysqli. Czy WP naprawdę używa mysql?
Średnia Joe

6
Wordpress korzysta z przestarzałych funkcji, ponieważ mysql_connectoficjalnie został zdeprecjonowany, wp wkrótce przeprowadzi się do PDO (wkrótce będzie to 1-2 lata). Ref: core.trac.wordpress.org/ticket/21663
Wyck

@AverageJoe ... tak, jak powiedziałem, WordPress używa funkcji mysql. Podobnie jak Wyck, mam nadzieję na PDO, ale nie wiem, w którą stronę pójdzie.
s_ha_dum

Dziękujemy za link trac Wyck. s_ha_dum proszę dołączyć ten link ( core.trac.wordpress.org/ticket/21663 ) do swojej odpowiedzi i poprawić gramatykę tam, gdzie się udajesz „Jeśli korzystałem z nich, odkąd pamiętam”, kiedy masz szansę. Dziękuję
przeciętny Joe

Mały guz. Zostało to napisane rok świetlny temu. Ale dziś uważam, że mamy mysqli_ * w wordpress od niektórych wersji, prawda?
K. Kilian Lindberg,

11

Aktualizacja do Wordpress 3.9+ - z PHP 5.5 przestarzałymi mysql_*funkcjami Wordpress zaczął używać mysqlijeśli jest dostępny na serwerze. Twoje przyszłe wtyczki i kod powinny wziąć to pod uwagę i przestać używać mysql_*. Obecnie, w wersji 3.9, wordpress sprawdza dostępność mysqlii używa go, jeśli jest dostępny. Jeśli nie, skorzysta, mysql_*ale ten czek zostanie usunięty w najbliższym możliwym terminie. Wydaje się, że w przyszłości będą korzystać, PDOale to większy projekt.

Oto FAQ i ogłoszenie na ten temat:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.