オフィスのイントラネット内でホストされている mssql サーバーからデータを取得する必要がある PHP ベースのサイトがあります。このデータを引き出すためのSQLを書きましたが、論理的には完全に機能します。Windows マシンでのテスト中に、私のコードは必要なすべてのデータを返します。
しかし、PHP DBO dblib を使用して同じクエリを php に入れると、構文の問題があることを示す戻り値 (つまり、false) が返されません。簡単な質問に答えるために、問題をデータベースに接続することはできず、他のクエリの多くは (同じデータベースから、同じテーブルからでも) 機能しますが、この特定の slq は機能していないようです。
さらに調査すると、「bigint」データ型に関連して「php_mssql」に制限がある可能性があることがわかりました。php.net を読んだところ、 8 ビットの int を処理する定義済みの定数がないように見えることがわかりました。
明確にするために、これは実行しようとしているSQLです:
SELECT dbo.Vehicle.VehicleID, dbo.Vehicle.CarNumber,
dbo.Driver.DriverID, dbo.Driver.DriverNumber, dbo.Driver.DriverName,
dbo.VehicleJobHistory.BookingID, dbo.VehicleJobHistory.PickupSuburb,
dbo.VehicleJobHistory.DestinationSuburb,
dbo.VehicleJobHistory.ReasonDispatchedToCar,
dbo.VehicleJobHistory.TimeJobRequired,
dbo.VehicleJobHistory.TimeCarAcceptedJob,
dbo.VehicleJobHistory.TimeCarPickedUp,
dbo.VehicleJobHistory.TimeCarCompletedJob,
dbo.VehicleJobHistory.KmToPickup, dbo.VehicleJobHistory.KmOfJob,
dbo.DispatchStatus.Alias
FROM (dbo.tblDispatch
RIGHT JOIN ((dbo.Vehicle
LEFT JOIN dbo.VehicleJobHistory ON dbo.Vehicle.VehicleID =
dbo.VehicleJobHistory.VehicleID) LEFT JOIN dbo.Driver ON
dbo.VehicleJobHistory.DriverID = dbo.Driver.DriverID) ON
dbo.tblDispatch.BookingID = dbo.VehicleJobHistory.BookingID)
LEFT JOIN dbo.DispatchStatus ON dbo.tblDispatch.StatusID =
dbo.DispatchStatus.DispatchStatusID
WHERE (dbo.Vehicle.VehicleID = ’$vid’) AND
(dbo.VehicleJobHistory.TimeJobRequired Between ‘$DateFrom’ AND
‘$DateTo’)
問題は、SQL サーバーで「bigint」として定義されている bookingID を使用した結合にあります。
基本的に、利用可能な回避策があるかどうかを知りたいですか?