无法使用 PHP 连接到 SQL Server

Posted

技术标签:

【中文标题】无法使用 PHP 连接到 SQL Server【英文标题】:Unable to connect to SQL Server with PHP 【发布时间】:2016-11-08 10:02:37 【问题描述】:

sqlsrv 字符串的连接不起作用。

$login = new PDO("sqlsrv:server=mysqlSERVER\SQLEXPRESS;Database=db_name", "user", "passw");

我有错误消息: Fatal error: Invalid handle returned.

我 101% 确定登录详细信息正常。因为它适用于其他项目。可能是问题php 7

【问题讨论】:

请确定几件事;作为一个命名实例,它是否使用被本地防火墙阻止的动态端口?你也知道 SQL Express 默认没有启用 TCP 连接。 我使用的是适当的 SQl 服务器,但这个名称仅用于说明。我也只是发现有时工作,有时返回错误...... 您安装了哪个版本的 SQLSRV 库?稳定的不支持 PHP/7,你必须从 GibHub repo 获取一个 nightly 。 @ÁlvaroGonzález 4.0.4 来自github.com/Azure/msphpsql/releases @Klapsius 我有同样的问题,php7 和 IIS 和 MSSQL 2012 ......你是怎么解决的? 【参考方案1】:

在 DSN 中尝试“ConnectionPooling=0”。

有时有效,有时返回错误

重用连接可能有问题。

DSN 参考: https://msdn.microsoft.com/en-us/library/ff628167(v=sql.105).aspx

【讨论】:

怎么用?【参考方案2】:

PHP Sql Server 驱动程序有问题 您应该将其更新到新版本

正如你提到的你使用的是 windows,这个版本完全可以在 windows 上运行

https://github.com/Microsoft/msphpsql/releases/tag/v4.1.1-Windows

【讨论】:

【参考方案3】:

看起来要连接到 MS-SQL,您需要使用 ODBC。

参考:http://php.net/manual/en/pdo.construct.php#120705

$odbc="odbc:Driver=SQL Server;Server=$server;Database=$database;";

$cnx = new PDO( $odbc , $user, $password);

【讨论】:

虽然 ODBC 应该可以用于创建与 MSSQL 服务器的连接,但 SQLSRV 也应该可以工作。 This MSDN article 很好地阐明了 ODBC 与 SQLSRV。您链接的 PHP 答案只是提供了一个使用 ODBC 连接到 MSSQL 的示例,这不是唯一的方法。 Here is a PHP example 使用 PDO 和 SQLSRV 驱动程序。 @afeique,对不起,我尽量忠实于网络服务器。无论哪种情况,您都会将mssqlsqlsrv 前缀与odbc 混淆。我发现有时最好将其简化为已确认的设计,如果可行,请添加更多复杂性以找到why。从本质上讲,就是清理到最小的执行模式来验证。 感谢@GoldBishop 的回复。我同意您将其简化为可行的确认设计的理由。我的 cmets 是为了澄清你的措辞,而不是你的逻辑或信息:听起来你暗示 ODBC 是 only 方式,但我确信这不是意图。我不相信我会将不同的驱动程序类型与 ODBC 混淆,因为我专门使用 ODBC 与 MSSQL/Express 服务器进行交互,但我相信这不是重点。 @afeique 你的好....我想确保他们不会将 ODBC 前缀与 MSSQL 混淆。他们确实需要简化连接到数据库时使用的协议。这就像一个“狮子、老虎和熊,哦,我的”场景。

以上是关于无法使用 PHP 连接到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

php 无法连接到 sql server 2008(使用 pdo dblib)

无法使用 PHP 和 Codeigniter 从 PHP Azure 连接到 SQL Server Azure

Codeigniter 无法连接到外部 SQL Server

无法使用 codeigniter 连接到 SQL SERVER 数据库

无法从 codeigniter 2.1.4 连接到 SQL Server 2012

Apache 不会使用 PHP 连接到 SQL Server