2017-04-06 3 views
1

PHP에서 SOAP 서비스를 개발 중입니다.
최근에 MySQL에서 결과를 검색 할 때 문제가 발생했습니다.
문제
결과를 검색 할 때 SQL 문에 지정된 것보다 많은 열을 얻습니다. 이것은 검색된 정보를 처리 할 때 코드에 영향을줍니다. 예를 들어 fetch()fetchAll()으로 변경하면 둘 이상의 레코드를 처리 할 수 ​​없습니다. PHP 또는 MySQL에게 꼭 필요한 열을 반환하고이 쓰레기를 반환하지 말라고 말하는 방법이 있습니까?
예제 코드이 생성됩니다PHP PDO가 null 열 이름을 반환했습니다.

$stmt2 = $pdo2->prepare("SELECT `id`, `username`, `IP_address` FROM PADR_users WHERE `username` LIKE :username"); 
$stmt2->bindParam(':username',$searchParam, PDO::PARAM_STR, 20); 
$stmt2->execute(); 
$tmp = $stmt2->fetch(PDO::FETCH_ASSOC); 
$response->return = var_export($tmp, true); 

:

$pdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$pdo2->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL); 

을하지만 그것도 조금하지 않습니다 : 내가 MySQL을 문의하기 전에

object(stdClass)#4 (1) { ["return"]=> string(193) "array ('id' => '19', 'username' => 'Batman2', 'IP_address' => '192.168.0.1' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '',)" } 

나는 이러한 사용하여 시도 차.
내가 fetchAll()의 구현 결과에 영향을 미쳤을 수 있다는 가능성을 제거하기 위해 의도적으로 fetch()하지 fetchAll()을 떠난
참고.

+0

' "%"$ searchParam "%는"'IP 주소 데이터베이스의 일부 잘못된 정보처럼 보이는 –

+0

같이해야한다. 명령 줄이나 PHPMyAdmin에서 확인한 후 삽입하기 전에 트리밍 해보십시오. var_export 대신에 결과를 할당하십시오. – aynber

+0

@MasivuyeCokile 나는 그것을했는데, 같은 잘못된 결과. – XAMlMAX

답변

1

오직 3 개의 열만 검색하고 있습니다. 그러나 IP 주소 끝에는 일부 null 데이터가 있습니다. 당신은 문자열 사이에 연결 연산자 말할 수 있습니다..

'IP_address' => '192.168.0.1' . "\0" . '' . "\0" . '' . "\0" . '' 
          ^ ^^ ^^ ^