SQLSRV和PDO_SQLSRV是兩個current-generation php drivers available from Microsoft,但都使用下面的代碼:SQL Server Native Client 11.(這就是爲什麼沒有Mac或Linux版本的PHP驅動程序:它們只是包裝。)兩個性能司機應該是相似的;這只是你喜歡哪個API的問題。
在大多數情況下,由於跨平臺的考慮,會使用PDO_SQLSRV驅動程序。但是,在查看這兩個驅動程序之後,我使用SQLSRV驅動程序來查看這兩個驅動程序,因爲它將數據作爲底層SQL Server數據類型的映射返回,而PDO_SQLSRV將所有內容作爲字符串返回。
所以,如果你的SQL是:
SELECT 1234 as integer, Cast(123.456 as float) as float,
getdate() as date, '1234' as string1,'123.456' as string2;
然後從PDO_SQLSRV該行的var_dump給出:
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"
}
}
而SQLSRV驅動程序提供了:
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"
}
}
它驅使我堅果PDO_SQLSRV將我的所有數據都轉換爲字符串,無論我是否願意,因此我使用了SQLSRV。 (我不得不承認我設置了ReturnDatesAsStrings=true
,因爲我懶得處理日期類。)
我也喜歡語法稍微好點,但那只是我。