- 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 Services正在运行。
MSSQL已设置为远程连接。
在我看来,$db用户似乎无权通过终端执行存储过程。
但为什么呢?
我不知道,如果你知道我的问题,所以如果需要,请询问更多信息!
也许可以使用try-and-catch来查看是否存在PDO错误。我有一种感觉,客户的价值观正在发生变化。
try {
$pdo = $db->prepare('blah blah');
$pdo->execute();
} catch (Exception $e) {
die($e->getMessage());
}
已解决。
问题出在客户身上。如果有%20(空白),他的通信接口无法读取URL字符串。