SQLSRV e PDO_SQLSRV sono i due current-generation php drivers available from Microsoft, ma entrambi usano lo stesso codice sottostante: SQL Server Native Client 11. (Questo è il motivo per cui non c'è nessuna versione Mac o Linux dei driver PHP: sono solo wrapper.) Performance dei due i driver dovrebbero essere simili; è solo questione di quale API preferisci.
Nella maggior parte dei casi si utilizza il driver PDO_SQLSRV a causa di considerazioni su più piattaforme. Tuttavia, dopo aver esaminato entrambi i driver per un nuovo (piccolo) progetto, sono andato con il driver SQLSRV perché restituisce i dati come [una mappa dei] tipi di dati SQL Server sottostanti, mentre il PDO_SQLSRV restituisce tutto come una stringa.
Quindi, se il vostro SQL è:
SELECT 1234 as integer, Cast(123.456 as float) as float,
getdate() as date, '1234' as string1,'123.456' as string2;
Poi var_dump della fila da PDO_SQLSRV dà:
array(1) {
[0] =>
array(5) {
'integer' =>
string(4) "1234"
'float' =>
string(7) "123.456"
'date' =>
string(23) "2012-12-06 22:35:05.373"
'string1' =>
string(4) "1234"
'string2' =>
string(7) "123.456"
}
}
mentre il conducente SQLSRV dà:
array(1) {
[0] =>
array(5) {
'integer' =>
int(1234)
'float' =>
double(123.456)
'date' =>
class DateTime#1 (3) {
...
}
'string1' =>
string(4) "1234"
'string2' =>
string(7) "123.456"
}
}
Mi faceva impazzire che PDO_SQLSRV ha lanciato tutti i miei dati su una stringa, indipendentemente dal fatto che volessi o meno, quindi ho usato SQLSRV. (Devo ammettere che ho impostato ReturnDatesAsStrings=true
perché ero troppo pigro per gestire la data class.)
Mi piace anche la sintassi un po 'meglio, ma sono solo io.
fonte
2012-12-07 03:59:47