我在localhost(开发)上使用 pdo_sqlsrv 驱动程序,在Linux服务器(生产)上使用 pdo_dblib 驱动程序与MS SQL 2008进行通信。
我发现了一些差异。例如 pdo_dblib 忽略SET NOCOUNT ON并仍然返回(空)结果集,SELECT查询不起作用后的rowcount(光标设置没有帮助)等。
最令人讨厌的是使用两个或多个语句:
$pdo = new PDO([ ... ]);
$stmtA = $pdo->query("SELECT 1 AS number, 'aaa' AS text");
$stmtB = $pdo->query("SELECT 'val' AS value");
print_r($stmtA->fetch(PDO::FETCH_ASSOC));
print_r($stmtB->fetch(PDO::FETCH_ASSOC));
PDO_SQLSRV
Array
(
[number] => 1
[text] => aaa
)
Array
(
[value] => val
)
没关系,我有两个陈述和两个正确的结果。
pdo_dblib
Array
(
[value] => val
[text] =>
)
bool(false)
结果不正确。第一个语句是两个语句的奇怪组合,第二个语句返回false。
有什么解决方案,如何创建更多的陈述?或者可以在Linux上使用不同的(更好的)PDO / MSSQL驱动程序?