【问题标题】:How to connect to mssql using pdo through PHP and Linux?如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?
【发布时间】:2011-08-22 16:06:46
【问题描述】:

我正在尝试使用以下代码建立新的 PDO 连接。

new PDO("mssql:driver=????;Server={$serverName};Database={$databaseName}", $username, $password, array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

我不确定要使用什么驱动程序?或者如何安装它们。我可以使用 PHP 中的 mssql_connect 函数完美连接,但我想改用 PDO 库。

我对 mssql 的 php.ini 设置是:

ssql

MSSQL Support   enabled
Active Persistent Links     0
Active Links    1
Library version     FreeTDS

Directive   Local Value Master Value
mssql.allow_persistent  On  On
mssql.batchsize 0   0
mssql.charset   no value    no value
mssql.compatability_mode    Off Off
mssql.connect_timeout   5   5
mssql.datetimeconvert   On  On
mssql.max_links Unlimited   Unlimited
mssql.max_persistent    Unlimited   Unlimited
mssql.max_procs Unlimited   Unlimited
mssql.min_error_severity    10  10
mssql.min_message_severity  10  10
mssql.secure_connection Off Off
mssql.textlimit Server default  Server default
mssql.textsize  Server default  Server default
mssql.timeout   60  60

【问题讨论】:

    标签: php sql-server database connection pdo


    【解决方案1】:

    PDO mssql驱动没有了,使用sqlsrv(php windows下)或dblib(php linux下)

    http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

    http://www.php.net/manual/en/ref.pdo-dblib.php

    【讨论】:

    • 使用 dblib 仍然会产生缺少驱动程序的错误。 “未捕获的异常 'PDOException' 带有消息'找不到驱动程序'”。我觉得奇怪的是 mssql_connect 工作正常,但我必须做一些事情才能让 PDO 端正常工作。我对linux不是很熟悉,这意味着我不确定我需要整理的驱动程序吗?
    • 你需要在你的 php.ini 中启用 pdo_dblib.so 并在 Linux 下设置 FreeTDS。
    • 如何在配置中启用 pdo_dblib?我也在使用centos 5 32bit,我该如何设置?
    • pdo_dblib 不再适用于 PHP 5.4+...我找不到适合此问题的解决方案。
    • @James PHP Microsoft PDO_SQLSRV 是否已弃用或使用它没有问题?
    【解决方案2】:

    我正在运行 Ubuntu 14.04。尝试连接到 MSSQL 我得到“未捕获的异常 'PDOException' 和消息'找不到驱动程序'”。看来我错过了 dblib/sybase PHP 扩展。

    我不得不跑:

    sudo apt-get install php5-sybase freetds-common libsybdb5 \ 
    && sudo apache2ctl restart
    

    现在工作正常。

    【讨论】:

    • php-sybase 包为我解决了这个问题。我不需要安装其他的。
    【解决方案3】:

    试试

    $dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
    
    $hostname may need to be configured as either...
    $hostname.':'.$port;
    

    $hostname.','.$port;
    

    【讨论】:

    • 我收到的错误消息是未捕获异常 'PDOException' 和消息'找不到驱动程序'
    【解决方案4】:

    Karl Wilbur 发布的 dblib/sybase PHP 扩展技巧对我有用。 LimeSurvey 的安装前检查页面现在显示

    PHP PDO 驱动程序库 - Microsoft SQL Server (dblib), MySQL

    只要确保找到并安装与您使用的 PHP 版本一致的版本即可;

    Prompt>sudo apt-get install php<appropriate version>-sybase freetds-common libsybdb5 Prompt>sudo apache2ctl restart

    干杯,

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 2015-11-19
      • 1970-01-01
      • 2014-05-07
      • 2012-12-27
      • 2014-12-02
      • 2015-03-10
      • 1970-01-01
      相关资源
      最近更新 更多