2012-11-03 3 views
0

SQL Server 정수 데이터 형식의 경우 PDO_SQLSRV는 문자열을 반환하지만 SQLSRV는 정수를 반환합니다. 필자가 이미 작성한 응용 프로그램은 여러 위치에서 명시적인 검사 (===)를 수행하므로 PDO_SQLSRV는 SQLSRV를 대체하지 않습니다. 일반적으로 내가 PDO를 고려되지 않을 것이다 - 그러나 교리는 PDO를 사용하는 것 그것을 위해 나는 마이크로 소프트 SQLSRV 드라이버를 찾을 수 없습니다 여기 PDO_SQLSRV는 모든 결과를 문자열로 반환합니다.

가 응답하여 샘플 코드입니다 :

(제발 계몽!)

PDO

$sql = "SELECT Top 1 * FROM Users"; 
$stmt = $conn->query($sql); 
$things = $stmt->fetchAll(PDO::FETCH_ASSOC); 
var_dump($things); 

데이터 :

'ID' => string '344' (length=3) 
'UserName' => string 'admin     ' (length=30) 

SQLSRV

$sql = "SELECT Top 1 * FROM Users"; 
$things = sqlsrv_query($conn, $sql); 

$thingsArray = []; 
while($row = sqlsrv_fetch_array($things, SQLSRV_FETCH_ASSOC)) 
{ 
    $thingsArray[] = $row; 
} 

var_dump($thingsArray); 

데이터 :

'ID' => int 344 
'UserName' => string 'admin     ' (length=30) 

그래서

- 지금 나는 두 가지 선택이 있다고 생각 : 신중을 해제하고 내가 정수를 타입 캐스팅이나 내 비교를 풀어, 또는 쓰기있어 있는지 확인하십시오가 /를 찾을 수 Doctrine SQLSRV 라이브러리.

정수를 정수로 반환하는 PDO_SQLSRV에 대한 설정을 알고있는 사람이 있습니까? 문서를 확인했지만 아무것도 찾을 수없는 것 같습니다.

또한 SQLSRV는 날짜를 네이티브 PHP DateTime 개체로 반환합니다. 쿨하지만 중요한 것은 아닙니다.

답변

1

PHP PDO 사양에 따르면 모든 필드가 문자열로 반환되므로 pdo_sqlsrv는 사양을 그냥 따르고 있습니다.

+0

재미 있습니다. 내 검색에서 나는 MySQL과 관련하여 SO에 대한 답을 찾고 PDO를 통해 정수를 반환했다. 연결을 만들 때 설정 한 플래그가 있습니다. 그것의 이름을 기억할 수 없다 - 그러나 그것을 시도하고 그것은 작동하지 않았다. – MikeMurko

관련 문제