对于 SQL Server 整数数据类型,似乎 PDO_SQLSRV 返回字符串,而 SQLSRV 返回整数。我已经编写的应用程序在几个地方进行了显式检查(===),这意味着 PDO_SQLSRV 不是 SQLSRV 的替代品。通常我不会考虑 PDO - 但是 Doctrine 似乎使用 PDO 并且我找不到它的 Microsoft 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 对象返回。有点酷,但不重要。