SQLSRVとPDO_SQLSRVは2つのですが、どちらも同じコードをSQL Server Native Client 11の下に使用しています(これはMac版またはLinux版のPHPドライバがないためです)ドライバは似ているはずです。それはあなたが好むAPIの問題です。
プラットフォーム間の考慮事項のために、ほとんどの場合、PDO_SQLSRVドライバを使用します。しかし、PDO_SQLSRVはすべてを文字列として返すのに対し、新しい(小)プロジェクトの両方のドライバを調べた後、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
を設定することを認めなければなりません。なぜなら私は日付クラスを扱うのが面倒だからです。)
私は構文が少し良くなっていますが、それは私だけです。