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
,因为我懒得处理日期类。)
我也喜欢语法稍微好点,但那只是我。