La deprecazione delle funzioni di mysql_ * in PHP viene trasferita ad altri database (MSSQL)?

2

Non sto parlando di MySQL, sto parlando di Microsoft SQL Server

Sono stato a conoscenza di PDO da parecchio tempo ormai, le funzioni standard di mysql sono pericolose e dovrebbero essere evitate.

link

Ma per quanto riguarda la funzione MSSQL in PHP? Sono, per la maggior parte degli scopi, insiemi identici di funzioni, ma la pagina PHP che descrive mssql_ * non contiene avvertimenti di deprecazione.

link

Ci sono driver PDO disponibili per MSSQL, ma non sono altrettanto facilmente disponibili o usati come driver MySQL.

Idealmente, mi sembra che dovrei farli funzionare e passare da mssql_ * a PDO come ho fatto con MySQL, ma è una priorità grande?

C'è qualche sicurezza nascosta per MSSQL che significa che è esente da tutto l'odio mysql_ * ultimamente? O la sua oscurità come back-end è l'unica ragione per cui non c'è stato più incoraggiamento PDO?

    
posta Will Meldon 12.09.2012 - 15:20
fonte

1 risposta

4

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.
risposta data 12.09.2012 - 16:02
fonte

Leggi altre domande sui tag