в MS SQL через PDO для PHP при мульти-запросе, не возвращаются данные. Привожу условный код:
$stmt = static::$dbh->prepare(' Declare @AccTranz Table (id int,dateCarry smalldatetime);
insert into @AccTranz (id, dateCarry)
select null,null where 1=0; -- Ничего не вставляем в таблицу (where 1=0)
select 1 as id, 1 as idName ; -- запрос не возвращает данные
');
$stmt->execute(array());
$MyResult =$stmt-> fetchAll(PDO::FETCH_CLASS,MyClass);
var_dump($MyResult); // array(0) { }
if (empty( $MyResult )) { // if multi-query
do {
$MyResult = $stmt-> fetchAll(PDO::FETCH_CLASS,'MyClass');
var_dump($MyResult ); // array(0) { } array(0) { }
} while ( $stmt->nextRowset());
}
Этот же код через PDO PHP под Windows работает без ошибок, последний набор:
$MyResult = $stmt-> fetchAll(PDO::FETCH_CLASS,'MyClass');
вернет результат "select 1 as id, 1 as idName". В SSMS код так же работает без ошибок. Если изменить запрос:
insert into @AccTranz (id, dateCarry)
select null,null; -- Что-то добавить
Тогда вернется результат "select 1 as id, 1 as idName". Вопрос: как исправить? может есть какая-то настройка?
Решение такое: в начало пакета нужно поставить SET NOCOUNT ON; (для PDO драйвера под LINUX MS SQL):
SET NOCOUNT ON;
insert into @AccTranz (id, dateCarry)
select null,null where 1=0; -- Ничего не вставляем в таблицу (where 1=0)
select 1 as id, 1 as idName ; -- запрос Возвращает данные!
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Когда пользователь входит в аккаунт, ему выводятся вся его информацияUsername выводится, а email нет
Сайт-донор имеет такой вот блок со списком:
Я хочу организовать поиск по сайту, сайт многоязычный, есть два варианта для поиска: elasticsearch или sphinxВторой вариант мне показался проще в понимании...