SQLSRV und PDO_SQLSRV sind die beiden current-generation php drivers available from Microsoft, aber beide verwenden den gleichen Code darunter: SQL Server Native Client 11. (Deshalb gibt es keine Mac oder Linux-Version der PHP-Treiber: Sie sind nur Wrapper.) Leistung der beiden Fahrer sollten ähnlich sein; Es ist nur eine Frage, welche API Sie bevorzugen.
In den meisten Fällen würde man wegen plattformübergreifender Überlegungen den PDO_SQLSRV-Treiber verwenden. Nachdem ich jedoch beide Treiber für ein neues (kleines) Projekt angeschaut habe, ging ich mit dem SQLSRV-Treiber, weil es Daten als [eine Karte von] den zugrunde liegenden SQL Server-Datentypen zurückgibt, während PDO_SQLSRV alles als String zurückgibt.
Also, wenn Ihr SQL ist:
SELECT 1234 as integer, Cast(123.456 as float) as float,
getdate() as date, '1234' as string1,'123.456' as string2;
Dann Var_dump der Reihe von PDO_SQLSRV gibt:
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"
}
}
während der SQLSRV Fahrer gibt:
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"
}
}
Es trieb mich Nüsse dass PDO_SQLSRV alle meine Daten in eine Zeichenfolge umgewandelt hat, ob ich es wollte oder nicht, also habe ich SQLSRV verwendet. (Ich muss zugeben, ich setzte ReturnDatesAsStrings=true
, weil ich zu faul war, um mit der Datumsklasse umzugehen.)
Ich mag auch die Syntax ein bisschen besser, aber das bin nur ich.