有没有办法在PDO中设置默认游标类型(特别是PDO_SQLSRV)?

时间:2011-02-17 00:41:09

标签: php sql-server windows pdo

因此,令人讨厌的是,来自Microsoft的PDO_SQLSRV驱动程序在来自带有不可滚动游标的SELECT查询的任何rowCount()调用时返回-1。

进一步增加烦恼,默认光标类型是_FORWARD,这意味着我似乎必须为每个准备好的语句添加属性,我可能需要返回行数(在此应用程序中,这是很多),如下所示。这是不可接受的,因为我们将使用的一些数据库引擎不支持可滚动游标。

$pdo->prepare("SELECT x FROM y", array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));

奇怪的是,这似乎不适用于PDO :: query()...

修改 的 如下所示,我也尝试过PDO :: setAttribute()并将选项添加到PDO :: __ construct(),但是既没有抛出异常或错误,也没有真正做任何事情!

我的问题是:有没有办法将默认光标类型设置为CURSOR_SCROLL?

1 个答案:

答案 0 :(得分:3)

怎么样:

$pdo->setAttribute(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL);

此外,您可以使用自己的方法扩展基础PDO类,并使用prepare方法覆盖:

class MyPdo extends PDO
{
    public function prepare($statement, $options = array())
    {
        if (empty($options)) $options = array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL);
        return parent::prepare($statement, $options);
    }
}