SQLSRV と PDO_SQLSRV は、Microsoft から入手できる 2 つの現世代の php ドライバーですが、どちらも同じコード (SQL Server Native Client 11) を使用しています。 2 つのドライバーは類似している必要があります。どちらの 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
(日付クラスを処理するのが面倒だったので、設定したことを認めなければなりません。)
構文も少し好きですが、それは私だけです。