WordPress mysqli e PDO
Il codice base di WordPress utilizza mysqli o PDO?
So che PDO è superiore a mysqli, ma mysqli non è nemmeno male. Inoltre, una delle caratteristiche che rende PDO superiore a mysqli (essere database-agnostico) non significa molto per WordPress poiché WordPress utilizzerà sempre il server mysql. Tuttavia, il binding dei parametri con i tipi di dati è qualcosa che PDO supporta ma mysqli no, ed è una cosa positiva.
Il mio istinto mi dice che WordPress utilizza mysqli, ma non sono ancora riuscito a vederlo nel codice base.
La mia seconda domanda è: se WordPress sta utilizzando mysqli, è per questioni di velocità o perché nei primi tempi (quando WP veniva sviluppato), PDO non esisteva ancora?

Un aggiornamento per WordPress 3.9+ - con PHP 5.5 che depreca le funzioni mysql_*
, WordPress ha iniziato a utilizzare mysqli
se disponibile sul server. I tuoi futuri plugin e codice dovrebbero tenere conto di questo e smettere di usare mysql_*
. Attualmente, nella versione 3.9, WordPress verifica la disponibilità di mysqli
e lo utilizza se presente. In caso contrario, usa mysql_*
, ma questo controllo verrà rimosso appena possibile. In futuro sembra che utilizzeranno PDO
, ma si tratta di un progetto più ampio.
Ecco le FAQ e l'annuncio al riguardo:
http://make.wordpress.org/core/2014/04/07/mysql-in-wordpress-3-9/

WordPress utilizza le funzioni mysql_*
.
http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/wp-db.php
Le ha utilizzate da sempre, per quanto io ricordi, il che probabilmente risponde alla tua ultima domanda. È quello che considererei codice legacy. Sospetto che verrà aggiornato presto (queste funzioni sono state deprecate solo a partire da PHP 5.5, credo). Non so quale strada prenderà lo sviluppo.
Link a un ticket in Trac, gentilmente fornito da Wyck (da un commento qui sotto):

Ho controllato il codice in wp-db.php. Alla riga 1133, c'è la funzione db_connect e secondo essa, non è nemmeno mysqli. Sono confuso. La riga 1143 chiaramente contiene questo; $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); e secondo il manuale PHP, ( http://php.net/manual/en/function.mysql-connect.php ), questo è un codice mysql, non mysqli. WP usa davvero mysql?

WordPress utilizza funzioni obsolete, dato che mysql_connect
è stato ufficialmente deprecato, wp si spera passerà presto a PDO (presto inteso come 1-2 anni). Rif: http://core.trac.wordpress.org/ticket/21663

@AverageJoe ... sì, come ho detto, WordPress usa le funzioni mysql. Come Wyck, spero in PDO, ma non so quale strada prenderà.

Grazie per il link al trac Wyck. s_ha_dum per favore includi questo link ( http://core.trac.wordpress.org/ticket/21663 ) nella tua risposta e correggi la grammatica dove dici "If has used those ever since I can remember," quando ne avrai l'opportunità. Grazie

Un piccolo bump. Questo è stato scritto un anno luce fa.. Ma oggi credo che abbiamo mysqli_* in WordPress da alcune versioni, giusto?

Ok, ho fatto un controllo del codice sorgente in WordPress ora. Si usa ancora il vecchio mysql*. Qualcuno conosce il futuro della classe database in WordPress? Non dovrebbe essere troppo difficile includere una nuova opzione alternativa mysqli* e mantenere il vecchio mysql* in background per sicurezza - magari come catch->if error con nuovo mysqli->esegui vecchia classe db = i plugin etc continuano a funzionare
