내 응용 프로그램에 심각한 문제가 있습니다.PHP + SQL Server + SQL Server 드라이버 = sqlsrv_num_rows 심각한 문제
SQL Server 데이터베이스에서 'CTE'를 선택한 다음 sqlsrv_num_rows를 사용하여 결과 개체의 행 개수를 계산할 때 이상한 결과가 발생합니다. -1.
이 값은 수동 (링크 : http://msdn.microsoft.com/en-us/library/ee376931(SQL.90).aspx)에도 적용되지 않습니다.
샘플 코드 :
W가 선택 'CTE - 공통 테이블 식'을 갖고, 예를 들면 :
SQL 콘솔에서$sql = ";WITH unsorted_cte AS
(
SELECT
*
FROM
xxx
WHERE
yyy
)
SELECT
u_cte.*
FROM
[unsorted_cte] u_cte
ORDER BY
u_cte.[zzzz] ASC";
@@ 행 개수 적절한 값을 가지고 있지만, 우리는 PHP에서이 선택 사용할 때 스크립트는 -1을 반환합니다.
샘플 :
// make query with proper coursor
$result = sqlsrv_query($link, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
// var dump shows us proper resource
var_dump($result):
resource(3) of type (SQL Server Statement)
// sqlsrv_num_rows show us wrong rows count
var_dump(sqlsrv_num_rows($result));
int(-1)
// sqlsrv_errors are empty
var_dump(sqlsrv_errors());
NULL
나는 전체 coursors http://msdn.microsoft.com/en-us/library/ee376927(SQL.90).aspx 및 선택 행의 매개 변수를 해결하기 위해 노력하고 나는 그것을 해결하지 못할.
btw. 내 경우에는 작동하는 행 선택 만 SQLSRV_CURSOR_FORWARD입니다.
내 환경 : PHP 5.3 MSSQL 2005 PHP 1.1 윈도우 서버 SQL 서버 드라이버 (MSDN 점 마이크로 소프트 닷컴/EN-US/라이브러리/ee229551 (SQL.10)에서 .aspx) 데이터베이스 인코딩 : 유니 코드
나는이 문제의 해결책을 알고있다.
제공된 도구를 사용하여 질문 서식을 지정하면 다른 사람이 쉽게 참조 할 수 있습니다. 코드를 코드로 포맷하려면 이진 문자열처럼 보이는 버튼을 사용하십시오. – Buggabill