具有持久连接的 PHP PDO dblib (mssql) 不起作用

PHP PDO dblib (mssql) with persistent connections not working

提问人:Sean256 提问时间:9/9/2015 最后编辑:Sean256 更新时间:12/3/2018 访问量:2579

问:

根据PDO的在线示例和文档,我有一行用于使用持久连接创建PDO对象:

$p = new PDO('dblib:host=SOMEHOSTNAME;dbname=SOMEDB',$user,$password,[PDO::ATTR_PERSISTENT=>true]);

官方文档示例:http://php.net/manual/en/pdo.connections.php

我们得到的错误:

SQLSTATE[IM001]:驱动程序不支持此函数:驱动程序不支持设置属性

php sql-server pdo freetds

评论

0赞 Kuya 9/10/2015
您是否正在连接到 MS SQL Server?
0赞 Sean256 9/12/2015
是的,我们是。dblib 是使用 freeTDS 的 mssql 驱动程序。
0赞 Kuya 9/12/2015
此扩展在具有 PHP 5.3 或更高版本的 Windows 上不再可用。表示 dblib 驱动程序在运行 PHP 5.3 或更高版本的 Windows 上不可用。您应该改用。PDO_SQLSRV了解更多信息。PDO_SQLSRV
0赞 Sean256 9/12/2015
你是100%正确的。不过,我在 nix 系统上使用它,而不是在 Windows 上使用它。我确实有一个使用 SQLSRV 的 Windows 实例用于其他用途,这很好。我认为我不需要提到我在 Nix 上,因为 dblib 只在上面。
1赞 Kuya 9/12/2015
根据我的搜索,pdo 驱动程序不允许设置属性。这就是您收到错误消息的原因。尝试更改为dblibdblib:sqlsrv:

答:

0赞 Arjun Singh 12/3/2018 #1

您可以通过安装 PDO ODBC 驱动程序来尝试此操作。
如果您使用的是 PDO ODBC 驱动程序,并且您的 ODBC 库支持 ODBC 连接池(unixODBC 和 Windows 是两个;可能还有更多),则建议您不要使用持久性 PDO 连接,而是将连接缓存保留到 ODBC 连接池层...http://php.net/manual/en/pdo.connections.php (Example #4 Persistent connections: Note 2)