WordPress mysqli и PDO
Какой драйвер использует кодовая база WordPress - mysqli или PDO?
Я знаю, что PDO превосходит mysqli, хотя mysqli тоже неплох. При этом одно из преимуществ PDO перед mysqli (независимость от типа базы данных) не имеет большого значения для WordPress, так как WordPress всегда использует MySQL сервер. Но привязка параметров с типами данных, которую поддерживает PDO, но не поддерживает mysqli - это действительно полезная функция.
Моя интуиция подсказывает, что WordPress использует mysqli, хотя я пока не нашел этому подтверждения в кодовой базе.
Мой второй вопрос: если WordPress использует mysqli, это связано с соображениями производительности или это потому, что в ранние дни (когда разрабатывался WP) PDO еще просто не существовал?

Обновление для WordPress 3.9+ — с тем, что PHP 5.5 объявил функции mysql_*
устаревшими, WordPress начал использовать mysqli
, если он доступен на сервере. Ваши будущие плагины и код должны учитывать это и перестать использовать mysql_*
. В настоящее время, в версии 3.9, WordPress проверяет доступность mysqli
и использует его, если он есть. Если нет — использует mysql_*
, но эта проверка будет удалена при первой возможности. В будущем, похоже, будет использоваться PDO
, но это более масштабный проект.
Вот часто задаваемые вопросы и анонс по этой теме:
http://make.wordpress.org/core/2014/04/07/mysql-in-wordpress-3-9/

WordPress использует mysql_*
функции.
http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/wp-db.php
Он использует их с тех пор, как я себя помню, что, вероятно, отвечает на ваш последний вопрос. Это то, что я бы назвал устаревшим кодом. Полагаю, что он будет обновлён в ближайшее время (эти функции были объявлены устаревшими только в PHP 5.5, если я не ошибаюсь). Я не знаю, каким путём пойдёт разработка.
Ссылка на тикет в Trac, предоставленная Wyck (из комментария ниже):

Я проверил код в файле wp-db.php. На строке 1133 находится функция db_connect, и согласно ей, это даже не mysqli. Я в замешательстве. Строка 1143 явно содержит это: $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); и согласно руководству PHP ( http://php.net/manual/en/function.mysql-connect.php ), это код mysql, а не mysqli. Неужели WP действительно использует mysql?

WordPress использует устаревшие функции, поскольку mysql_connect
официально объявлен устаревшим. Надеюсь, WP вскоре перейдёт на PDO ("вскоре" означает 1-2 года). Ссылка: http://core.trac.wordpress.org/ticket/21663

@AverageJoe ... да, как я и сказал, WordPress использует функции mysql. Как и Wyck, я надеюсь на переход к PDO, но не знаю, как всё сложится.

Спасибо за ссылку на трек, Wyck. s_ha_dum, пожалуйста, добавь эту ссылку (http://core.trac.wordpress.org/ticket/21663) в свой ответ и исправь грамматику в фразе "If has used those ever since I can remember," когда будет возможность. Спасибо.

Небольшой бамп. Это было написано целый световой год назад... Но сегодня, я полагаю, в WordPress уже несколько версий используется mysqli_*, верно?

Ладно, проверил исходный код WordPress сейчас. Там по-прежнему старый mysql*. Кто-нибудь знает будущее класса базы данных в WordPress? Не должно быть слишком сложно добавить новую альтернативу mysqli* и оставить старый добрый mysql* на заднем плане на всякий случай — возможно, как catch->if error с новым mysqli->запустить старый класс db = плагины и т.д. продолжают работать.
