2012-11-03 38 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

这很有趣。在我的搜索中,我找到了与SO有关的答案,并通过PDO返回整数。有创建连接时设置的标志。不记得它的名字 - 但试过了,它不起作用。 – MikeMurko

相关问题