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对象的形式返回日期。有点酷,但不重要。
这很有趣。在我的搜索中,我找到了与SO有关的答案,并通过PDO返回整数。有创建连接时设置的标志。不记得它的名字 - 但试过了,它不起作用。 – MikeMurko