0

对于 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 对象返回。有点酷,但不重要。

4

1 回答 1

1

PHP PDO 规范声明所有字段都作为字符串返回,因此 pdo_sqlsrv 只是遵守规范。

于 2012-11-03T04:27:26.213 回答