【问题标题】:PHP pdo mssql external connection via terminal fails通过终端的PHP pdo mssql外部连接失败
【发布时间】:2014-04-23 16:45:37
【问题描述】:
  • Windows 7 Professional 上的 SQL Server 2012 Express。
  • PHP 5.4
  • IIS 7.5

我打开一个 PDO 连接:

$sqlconn = "sqlsvr:server=(local)\SQLEXPRESS;database=MyDb";
$pdo = new PDO( $sqlconn, $dbuser, $dbpass );
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

然后我执行一个存储过程:

$query = $pdo->prepare( "EXEC $storedProc ?" );
$query->bindParam( 1, $value );
$query->execute();
$spVals = $query->fetchAll( PDO::FETCH_ASSOC );

一切正常,连接建立,我得到一个记录集。

我的客户也是如此,如果他从外部客户连接。但如果他使用终端连接,他就不会获得记录集。连接已打开,存储过程已找到但未执行。 唯一不同的是,终端与 SQL Server 不是同一个 windows 域的成员。

在 Sql Server 配置管理器中,用于网络配置的共享内存和 TCP/IP 已激活。 Sql Server 和 Sql Server Browser 服务正在运行。

为远程连接设置了 MSSQL。

看起来好像 $dbuser 无权通过终端执行存储过程。

但是为什么呢?

我不知道,如果您了解我的问题,请在需要时询问更多信息!

【问题讨论】:

    标签: php sql-server pdo terminal remote-access


    【解决方案1】:

    也许使用 try 和 catch 来查看是否存在 PDO 错误。我感觉客户所绑定的价值发生了变化。

    try { $pdo = $db->prepare('blah blah'); $pdo->execute(); } catch (Exception $e) { die($e->getMessage()); }

    【讨论】:

      【解决方案2】:

      解决了。

      问题出在客户身上。如果有 %20(空白),他的通信接口无法读取 URL 字符串。

      【讨论】:

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