2012-12-21 3 views
0

mssql 편집기에서 잘 작동하는 공통 테이블식이 있습니다. 그러나 PHP에서 문자열 변수를 채우고 odbc_exec($dbhandle,$query)을 사용하면 아무런 결과도 반환하지 않습니다. 오류가 발생하지 않습니다. 이것이 PHP의 한계입니까? 다양한 다른 테이블에 대한 다른 선택 쿼리가 제대로 실행됩니다. 문제는 CTE 문과 관련된 것입니다.공통 테이블 식 쿼리 사용

+1

문제의 원인이되는 내용을 표시 할 수 있습니까? – DaveRandom

+2

SSMS에서 SQL 프로파일 러 도구를 실행하여 서버로 들어오는 SQL 쿼리를 가로 채십시오. 그런 다음 CTE가 포함 된 쿼리를 보내야하는 PHP 클라이언트의 요청을 트리거합니다. CTE를 포함하고있는 쿼리가 서버로오고 있는지 (그리고'odbc_exec'에 의해 필터링되지 않았는지) 확인해야합니다. –

답변

1

나는이 오래된 질문 알아요,하지만 대답되지 않았으며 그렇게 내가에 칩 거라고 생각 높은 순위 구글 결과입니다. 석사 SQL 서버를 쿼리의 기본 PHP 방법

없음 공통 테이블 표현식 ('WITH'절)을 지원할 수 있습니다. 여기에는 mssql_ * 라이브러리와 odbc_ * 라이브러리가 포함됩니다.

이것은 MS SQL이 (실행할 매크로를 작성하여) CTE를 처리하는 방식 때문입니다. 좋은 소식은 Microsoft의 라이브러리 (sqlsrv_ *)가 기본적으로 CTE를 지원한다는 것입니다.

sqlsrv_ * 라이브러리는 연결, 간단한 쿼리, 준비된 명령문 등을 생성하고 소비하는 측면에서 mssql_ *과 동일하게 작동합니다. MS SQL 서버와 함께 mssql_ * 또는 odbc_ *를 사용하는 경우 거의 대체가됩니다. 부팅하는 것이 훨씬 빠릅니다.

this link에서 sqlsrv 라이브러리를 얻을 수 있습니다. 이 글을 쓰는 시점에서 SQL 2008에는 2.x가 좋지만 SQL 2012에는 3.x가 필요합니다.