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