Qual è meglio, MySQL o MySQLi? E perché? Quale dovrei usare?
Intendo meglio non solo in termini di prestazioni, ma di qualsiasi altra caratteristica rilevante.
Qual è meglio, MySQL o MySQLi? E perché? Quale dovrei usare?
Intendo meglio non solo in termini di prestazioni, ma di qualsiasi altra caratteristica rilevante.
Risposte:
Se dai un'occhiata alla panoramica dell'estensione migliorata di MySQL , dovrebbe dirti tutto ciò che devi sapere sulle differenze tra i due.
Le principali funzioni utili sono:
mysql_*()
è ora obsoleto e verrà rimosso presto. Non dovresti usarlo per il nuovo codice.
C'è una pagina di manuale dedicata per aiutare a scegliere tra mysql, mysqli e DOP su
Il team di PHP consiglia mysqli o PDO_MySQL per i nuovi sviluppi:
Si consiglia di utilizzare le estensioni mysqli o PDO_MySQL. Non è consigliabile utilizzare la vecchia estensione mysql per nuovi sviluppi. Di seguito viene fornita una matrice di confronto delle funzionalità dettagliata. Le prestazioni complessive di tutte e tre le estensioni sono considerate pressoché identiche. Sebbene le prestazioni dell'estensione contribuiscano solo a una frazione del tempo di esecuzione totale di una richiesta Web PHP. Spesso l'impatto è minimo dello 0,1%.
La pagina ha anche una matrice di funzionalità che confronta le API di estensione. Le principali differenze tra API mysqli e mysql sono le seguenti:
mysqli mysql
Development Status Active Maintenance only
Lifecycle Active Long Term Deprecation Announced*
Recommended Yes No
OOP API Yes No
Asynchronous Queries Yes No
Server-Side Prep. Statements Yes No
Stored Procedures Yes No
Multiple Statements Yes No
Transactions Yes No
MySQL 5.1+ functionality Yes No
* http://news.php.net/php.internals/53799
C'è una matrice di funzionalità aggiuntiva che confronta le librerie (new mysqlnd contro libmysql) su
e un articolo di blog molto approfondito su
Ho abbandonato usando mysqli. È semplicemente troppo instabile. Ho avuto domande che bloccano PHP usando mysqli ma funzionano bene con il pacchetto mysql. Anche mysqli si arresta in modo anomalo sulle colonne LONGTEXT . Questo bug è stato sollevato in varie forme almeno dal 2005 e rimane rotto . Vorrei sinceramente usare dichiarazioni preparate, ma mysqli non è abbastanza affidabile (e nessuno sembra preoccuparsi di risolverlo). Se vuoi davvero dichiarazioni preparate vai con DOP.
Ciò che è meglio è DOP; è un'interfaccia meno rigida e offre anche le stesse funzionalità di MySQLi.
L'uso di istruzioni preparate è utile perché elimina le possibilità di iniezione SQL; l'uso delle istruzioni preparate sul lato server è negativo perché aumenta il numero di round trip.
per me, le dichiarazioni preparate sono una caratteristica indispensabile. più precisamente, associazione di parametri (che funziona solo su istruzioni preparate). è l'unico modo veramente sano di inserire stringhe nei comandi SQL. non mi fido davvero delle funzioni di "fuga". la connessione DB è un protocollo binario, perché usare un sub-protocollo limitato ASCII per i parametri?