2013-03-22 2 views
0

해결 : 쿼리를 저장 프로 시저로 쓰고 난 다음에 다시 이 PHP에서 잘못보고되었습니다. 결국 null이있는 열이있어서 PHP가 이상하게 읽었 기 때문에 궁극적으로 알게되었습니다. Perl이이를 잘 처리했음을 알고 실망 스럽지만 오.PHP에서 이와 유사한 결과를 반환하는 SQL 쿼리

나는 MS SQL 서버 2012에 액세스하기 위해 adodb와 함께 PHP 5.3.3을 사용하고 있습니다. 대부분의 쿼리는 괜찮 았지만 와일드 카드로 전체 참여를 시도하고 있습니다.

다음 부분에있다 :

on a_table.hostname LIKE '%' + r_table.Hostname + '%' 
OR '%' + a_table.hostname like r_table.Name + '%' 

내가 SQL Studio의 쿼리를 실행할 때, 나는 1224 개 기록을 얻을. PHP에서 2406. 나는 SQL 서버의 로그를 살펴 봤고 실행중인 쿼리가 정확하며 복사하여 붙여 넣으면 결과의 예상/올바른 수를 반환합니다.

PHP에서 쿼리를 편집하고 연결된 % s을 제거하면 결과가 쿼리를 직접 실행하는 것과 일치합니다 (와일드 카드도 함께 제거되는 경우).

필자는 PHP의 mssql 함수와 adodb를 사용하여 동일한 결과로 쿼리를 테스트했습니다.

편집 : Perl, Sql Studio 및 PHP를 통해 세 가지 방식으로 쿼리를 테스트했습니다. Perl & SQL 스튜디오는 동일합니다 - PHP는 여전히 잘못되었습니다.

+0

병합은 "."입니다. PHP (vs "+"). 그게 문제 야? –

+0

아니요, 게시 한 코드는 더하기 기호를 연결로 사용하는 SQL 쿼리입니다. 또한 SQL Studio에서 작동하지 않을 수도 있습니다. 그래도 응답 주셔서 감사합니다. – johanno

+0

PHP에서 반환되는 레코드 수를 얻기 위해 무엇을 사용하고 있습니까? – Rachcha

답변

0

나는 저장 프로 시저로 쿼리를 작성하고 PHP에서 여전히 잘못보고되었습니다. 궁극적으로 널 (null)이있는 열이 있기 때문에 PHP가 이상하게 읽었습니다.

관련 문제