【问题标题】:Configuring PHP 5.3 to work with MS SQL Server配置 PHP 5.3 以使用 MS SQL Server
【发布时间】:2013-12-01 14:00:33
【问题描述】:

我的任务是获取我们所有的 MySQL 数据库并将它们迁移到 SQL Server。在尝试让 PHP 5.3.24 与 MSSQL 一起工作时,我做了以下事情:

将非线程安全的驱动复制到/php/ext。

更新了我的 php.ini 文件以包含以下两行:

extension=php_pdo_sqlsrv_53_nts_vc9.dll;
extension=php_sqlsrv_53_nts_vc9.dll

重新启动在 Windows Server 2008 R2 上运行的 IIS 7。

phpinfo 在Registered PHP Streams 下显示sqlsrv,并且sqlsrv 也出现在PDO 驱动程序下,pdo_sqlsrv 支持显示为“启用”。然而,当我尝试通过我的应用程序连接时,我得到以下信息:

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\inetpub\wwwroot\mystuff\myphpconnectfile.php

我的连接字符串如下所示:

$con = new PDO("mssql:host=xxx.xxx.xxx.xxx,1433;dbname=mydb", "user", "pwd");
$con -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return($con);

看起来它可以找到服务器,但不是 PHP/PDO mssql 驱动程序。我错过了什么?

编辑:phpinfo 下的配置命令显示“--without-mssql”“--without-pdo-mssql”行。我不知道去哪里改变它,或者是否有必要。

【问题讨论】:

  • 为什么要从 MySQL 迁移到 MS-SQL?!?
  • 尝试new PDO('sqlsrv: ... '); 而不是new PDO('mssql: ... ');
  • @arkascha:相信我,这不是我的主意,我为之奋斗。我们与 MySQL 相处得非常好,但 TPTB 已经决定,为了互操作性,一切都需要在 SQL Server 中。幸运的我。
  • @FDL:这让我有所收获。我现在收到此错误:在 DSN 字符串中指定了无效的关键字“主机”。我需要重写我的连接字符串吗?
  • @Chris 叶,sqlsrv:Server=xxx,1433;Database=mydb

标签: php sql sql-server pdo


【解决方案1】:

您正在为 MSSQL 使用无效的 DSN 连接字符串。你需要使用here找到的格式。

new PDO('sqlsrv:Server=xxx.xxx.xxx.xxx,1433;Database=mydb', 'user', 'pwd');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2017-10-07
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多