2009-10-19 4 views
0

저는 PHP를 통해 ADO에 액세스하기위한 기본 도우미 기능을 거의 갖추고 있습니다. $ cmd-> Execute (,, adExecuteNoRecords);에 대해 설정된 adExecuteNoRecords 옵션을 사용하여 저장 프로 시저를 실행하려고 할 때 문제가 발생합니다.PHP, 선택적 매개 변수가있는 ADO 개체 메서드 호출

내가 처음 두 매개 변수에 null의 시도했습니다, 새로운 VARAINT(), 새로운 변종 (널), 새로운 변종 (VT_EMPTY), 등 ...

나도 다시 얻을 "매개 변수 1을 통과 할 수 없습니다 참조 또는 형 불일치의 com_exception 및 -> 실행 (, adExecuteNoRecords)은 PHP 파싱을 통과하지 않습니다.

나는 꽤 많은 검색을 해왔지만, 이것을 사용하는 사람의 한 예를 발견하지 못했습니다.

그래서 PHP에서 선택적 매개 변수가있는 COM 개체의 메서드를 호출 할 때 시작 매개 변수를 아무 것도 설정하지 않습니까?

감사합니다.

+0

사이드 노트 : 매개 변수가없는 경우에도 저장 프로 시저를 실행할 때 $ cmd-> Parameters-> Refresh를 수행해야합니다. – ddowns

답변

1

선택적 매개 변수 대신 $missing = new Variant(VT_ERROR)을 전달하십시오.

Btw, COM 매개 변수에는 선택 항목인데도 여전히 형식이 있습니다. 선택적 매개 변수가 BSTR이면 생략하는 것은 일반적으로 빈 문자열을 전달하는 것과 같습니다. 이상한 것처럼 보일지 모르겠지만 선택적 매개 변수의 기본값은 형식 라이브러리에 지정되어 있습니다. 나는. 선택적 BSTR 매개 변수는 "abc"기본값을 가질 수 있습니다. 따라서 PHP에서 호출을 구성하기 전에 이것을 조사해야합니다. 특정 경우 Execute에는 특정 기본값이없는 3 개의 선택적 VARIANT 매개 변수가 있으므로 VT_ERROR를 사용하여 누락 된 VARIANT 매개 변수를 나타냅니다.

관련 문제