sqlserver-php odbc驱动程序没有声明光标错误(查询在sql管理工作室中工作)


sql server - the cursor was not declared error with php odbc driver(query works in sql management studio)

我有一个在php代码中执行的查询:

SELECT ((SUM(CASE WHEN I.InCompliance=1 AND FI.Status='C' THEN 1 ELSE 0 END)*100) / (SUM(CASE WHEN FI.Status='C' THEN 1 ELSE 0 END))) as result 
FROM tbl_Inspection I,tbl_Facility F,tbl_FacilityInspection FI 
WHERE I.InspectionDate >= '2013-2-01' 
AND I.InspectionDate < '2014-3-01' 
AND I.belongsToFacility=F.FacilityID 
AND I.FacInspId=FI.FacInspId 
AND F.DistrictID=1 

它在mssql管理工作室对我来说执行得很好,但我得到了这个错误

警告:odbc_exec():SQL错误:[unixODBC][FreeTDS][SQL Server]未声明游标。,SQL状态37000在/srv/www/htdocs/capsdev/includs/phpdbform_db_odbc.php的第104行SELECT((SUM(CASE WHEN I.InCompliance=1 AND FI.Status='C'THEN 1 ELSE 0 END)*100)/(SUM2014-3-01'AND I.belongsToFacility=F.FacilityID AND I.FacInspId=FI.FacInspId AND F.DistrictID=1警告:odbc_fetch_array()要求参数1为资源,布尔值在第114行的/srv/www/htdocs/capsdev/includs/phpdbform_db_odbc.php中给定

任何帮助都将不胜感激。

谢谢你,

Daniel

尝试使用显式联接而不是隐式联接。

类似于:

SELECT ((SUM(CASE WHEN I.InCompliance=1 AND FI.Status='C' THEN 1 ELSE 0 END)*100) / (SUM(CASE WHEN FI.Status='C' THEN 1 ELSE 0 END))) as result 
FROM tbl_Inspection I
inner join tbl_Facility F
on I.belongsToFacility=F.FacilityID  
inner join tbl_FacilityInspection FI 
on I.FacInspId=FI.FacInspId 
WHERE I.InspectionDate >= '2013-2-01' 
AND I.InspectionDate < '2014-3-01' 
AND F.DistrictID=1