Есть ли способ установить тип курсора по умолчанию в PDO (в частности, PDO_SQLSRV)? - PullRequest
1 голос
/ 17 февраля 2011

Таким образом, досадно, что драйвер PDO_SQLSRV от Microsoft возвращает -1 при любом вызове rowCount () из запроса SELECT с не прокручиваемыми курсорами.

В дополнение к раздражению, тип курсора по умолчанию _FORWARDЭто означает, что мне кажется, что мне нужно добавить атрибуты к каждому подготовленному оператору, где мне может понадобиться вернуть счетчик строк (в этом приложении это много), как показано ниже.Это недопустимо, поскольку некоторые из используемых нами механизмов баз данных не поддерживают прокручиваемые курсоры.

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

Любопытно, что это не работает с PDO :: query () ...

Редактировать: Как показано ниже, я также попробовал PDO :: setAttribute () и добавил опцию в PDO :: __ construct (), но не выбрасывал исключения или ошибки, илипохоже, что-то действительно делает!

Мой вопрос ко всем вам: есть ли способ установить тип курсора по умолчанию на CURSOR_SCROLL?

1 Ответ

3 голосов
/ 17 февраля 2011

Как насчет:

$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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...