Le famiglie di funzioni MSSQL_*
e MySQL_*
condividono un'interfaccia comune (ad esempio denominazione simile), per comodità (se si conoscono le proprie funzioni, si conoscono le altre) ma è lì che si fermano le somiglianze.
E ... non c'è odio per la famiglia MySQL_*
, non è "pericoloso", il suo utilizzo è scoraggiato poiché utilizza un'API MySQL più datata che non è più rilevante (eccetto per le applicazioni legacy). Al momento (PHP 5.4) MySQL_*
non è realmente deprecato, l'uso delle sue funzioni non solleva nemmeno un errore E_DEPRECATED, ma l'estensione non è attivamente sviluppata, solo mantenuta (solo correzioni di bug e anche loro non hanno priorità alta) . Non sappiamo quando le funzioni saranno effettivamente deprecate, ma il processo normale è che in una versione futura che li utilizza genererà un errore E_DEPRECATED, e in una versione anche successiva l'estensione non sarà disponibile come parte dell'installazione predefinita e non sarà più mantenuto.
Non so cosa intendi quando dici che i driver MSSQL non sono prontamente disponibili, ma PHP non raggruppa più le librerie client MySQL dopo la prima iterazione di PHP 5.0. Le librerie client sono essenziali per qualsiasi database, poiché le estensioni di PHP sono per lo più solo wrapper delle librerie client. Dovrai installare tu stesso le librerie client sia per MySQL che per MSSSQL, e forse non l'hai ancora notato perché stai utilizzando un pacchetto LAMP o WAMP che installa tutto per te. Tuttavia, in una configurazione di vaniglia, le librerie client del database devono essere installate separatamente.
PDO offre un'interfaccia agnostica di database prevalentemente , tuttavia è completamente a te decidere se utilizzarla o utilizzare MSSQL_*
. Se stai lavorando con diversi database, non necessariamente nello stesso progetto, PDO potrebbe essere la scelta migliore in quanto dovresti familiarizzare con una sola interfaccia. E se il tuo progetto utilizza più database, PDO è il chiaro vincitore. Personalmente sono passato a PDO per tutte le mie esigenze di database e non ho mai guardato indietro.
Per riassumere:
-
MSSQL_*
e MySQL_*
condividono un'interfaccia comune per comodità, niente di più, sono solo wrapper per le rispettive librerie client del database.
-
MySQL_*
presto non sarà disponibile, ma MSSQL_*
lo farà.
- Sia PDO che
MSSQL_*
sono scelte valide per lavorare con SQL Server.