PDO_SQLSRV将所有结果作为字符串返回

时间:2012-11-03 03:59:29

标签: php sql-server pdo doctrine doctrine-orm

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

1 个答案:

答案 0 :(得分:1)

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

相关问题