SQLSRV y PDO_SQLSRV son los dos current-generation php drivers available from Microsoft, pero ambos utilizan el mismo código debajo: SQL Server Native Client 11. (Es por eso que no hay versión para Mac o Linux de los controladores PHP: no son más que las envolturas.) Rendimiento de los dos los conductores deben ser similares; es solo una cuestión de qué API prefieres.
En la mayoría de los casos se utilizaría el controlador PDO_SQLSRV debido a consideraciones multiplataforma. Sin embargo, después de ver los dos controladores para un nuevo proyecto (pequeño) fui con el controlador SQLSRV porque devuelve datos como [un mapa de] los tipos de datos SQL Server subyacentes, mientras que el PDO_SQLSRV devuelve todo como una cadena.
Así que si su SQL es:
SELECT 1234 as integer, Cast(123.456 as float) as float,
getdate() as date, '1234' as string1,'123.456' as string2;
Entonces var_dump de la fila de PDO_SQLSRV da:
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"
}
}
mientras que el conductor SQLSRV da:
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"
}
}
Me llevó frutos secos ese PDO_SQLSRV arroja todos mis datos a una cadena, ya sea que yo quisiera o no, así que utilicé SQLSRV. (Tengo que admitir que establecí ReturnDatesAsStrings=true
porque era demasiado vago para lidiar con la clase de fecha.)
También me gusta la sintaxis un poco mejor, pero así soy yo.