使用PDO和dblib驱动程序的Zend tablegateway没有结果

时间:2013-10-30 21:56:05

标签: php sql-server-2005 pdo zend-framework2

希望有人能让我看起来很傻。这个问题阻碍了我。我一直在本地WAMP堆栈上开发Web应用程序。我一直在使用sqlsrv PDO驱动程序,一切都运行得非常好。我将我的应用程序发布到使用PDO dblib驱动程序的Ubuntu 10.04服务器。该网站的大部分工作,但我有一个查询,如果结果集被缓冲,将只返回一个记录。如果没有缓冲,则不会显示任何结果。如果我使用PDO运行查询,它可以工作。如果我使用Zend TableGateway查询结果不存在。有什么想法吗?第一个图像是记录的工作显示,第二个图像是\ Zend \ Debug \ Debug :: dump()的问题。

Working display

Not working display with a \Zend\Debug\Debug::dump()

更新:我确定问题是我在控制器中查询表并将其发送到视图,但在视图中我有一个视图帮助器命中同一个表。似乎dblib驱动程序没有正确处理异步调用,并且视图助手正在切断控制器的查询。有关DB / Server配置修复的任何想法?如果不是,我想我可以重新编写实现代码。

1 个答案:

答案 0 :(得分:0)

正在使用的FreeTDS驱动程序不是线程安全的。要修复,每个返回的resultSet会立即送入本地数组:

$resultSet = $this -> tableGateway -> selectWith ( $select );

$results = array();

foreach($resultSet as $r)
{
    $results[] = $r;
}

return $results;

这可以防止数据库连接相互干扰。