SQL Server の整数データ型の場合、PDO_SQLSRV は文字列を返しますが、SQLSRV は整数を返します。私の既に作成したアプリは、いくつかの場所で明示的なチェック (===) を行っているため、PDO_SQLSRV は SQLSRV の代替品ではありません。通常、私は PDO を検討していませんが、Doctrine は PDO を使用しているようで、Microsoft SQLSRV ドライバーが見つかりませんでした (教えてください!)
応答を含むサンプル コードを次に示します。
PDO
$sql = "SELECT Top 1 * FROM Users";
$stmt = $conn->query($sql);
$things = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($things);
データ:
'ID' => string '344' (length=3)
'UserName' => string 'admin ' (length=30)
SQLSRV
$sql = "SELECT Top 1 * FROM Users";
$things = sqlsrv_query($conn, $sql);
$thingsArray = [];
while( $row = sqlsrv_fetch_array($things, SQLSRV_FETCH_ASSOC))
{
$thingsArray[] = $row;
}
var_dump($thingsArray);
データ:
'ID' => int 344
'UserName' => string 'admin ' (length=30)
だから - 今、私には2つの選択肢があると思います.これを慎重にリリースし、整数を型キャストするか、比較を緩めていることを確認するか、Doctrine SQLSRVライブラリを作成/検索します.
整数を整数として返す PDO_SQLSRV の設定を知っている人はいますか? ドキュメントを確認しましたが、何も見つからないようです。
また、SQLSRV は日付をネイティブ PHP DateTime オブジェクトとして返します。ちょっとクールですが、重要ではありません。