0

我正在尝试在 Windows XP sp2 上使用 PHP 5.2.9-2 连接到 SQL Server 2008(不是 express)。我可以从同一台机器上的 SQL Server Management Studio 很好地连接到远程 SQL Server。

我的第一次尝试是这样的:

$conn = new PDO("mssql:host={$host};dbname={$db}", $user, $pass);

这给出了这个错误:

PHP致命错误:  
带有消息的未捕获异常“PDOException”
'SQLSTATE[0100] 无法连接:SQL Server 不可用或不存在。  
拒绝访问。(严重性 9)'

第二次尝试(在专家交流中找到)

$conn = new PDO("odbc:Driver={SQL Server Native Client 10.0};Server={$host};Database={$db};Uid={$user};Pwd={$pass}", 
                         $user, $pass);

这有效,但我不能使用PDO::lastInsertId(),我希望能够:

驱动不支持这个函数:驱动不支持lastInsertId()

你有什么建议吗?任何帮助将不胜感激。

4

3 回答 3

1

我很确定带有 mssql 数据服务器类型的 pdo 需要 dblib 才能连接。你的机器上安装了 dblib 吗?确保您可以在系统路径中的某处找到 ntwdblib.dll。我知道这与您收到的错误消息不符,但我不确定我是否相信错误消息。

于 2009-04-28T13:50:30.173 回答
1

我按照这里的建议更新了 ntwdblib.dll,现在它可以工作了。

不幸的是我仍然不能使用PDO::lastInsertId(),因为显然这个驱动程序也不支持它,所以它真的不值得麻烦。但是,我可以使用等效的SELECT @@IDENTITY as Id.

于 2009-04-28T14:06:41.240 回答
0

您不能使用 SQL Server 身份验证,因为只允许 Windows 身份验证。

检查服务器是否正在运行混合模式身份验证。

还要检查这个 SO 问题是否对您有帮助。

于 2009-04-28T13:28:07.730 回答