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

相關問題