Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Проблема с результатом запроса на сервере


Автор: Vaz007 27.9.2017, 16:19
Добрый день, есть следующая проблема:

Имеется запрос вида(1) : 
Код

SELECT CASE WHEN COLUMN1 IS NULL THEN 'Condition1' 
                  ELSE COLUMN1 
         END AS 'COL1',
         CASE WHEN COLUMN1 IS NULL THEN 'No' 
                  ELSE 'Yes' 
         END AS 'COL2'
FROM OPENQUERY (linked_server,'SELECT id as COLUMN1 
                                           FROM table
                                  WHERE id in ($id) ')

Запрос на sql server возвращает нормальный результат : COL1 : 'text1', COL2: 'text2'.
На сервере делаю подключение к БД через odbc_connect, используя Driver={SQL Server Native Client 10.0}, получаю следующий результат, не возвращаются колонки из запроса:
text1 : 'text1', text2: 'text2' , вместо названия колонки, записывается результат.
Ниже код получения результата:
Код

public function fetch($sql) {
        $rows = array();
        if ($this->connection_id && !empty($sql)) {
            $result = odbc_exec($this->connection_id, $sql);
            while ($row = odbc_fetch_array($result)) {
                $rows[] = $this->to_utf8($row);
            }
        }
        return $rows;
    }

Если же создать временную таблицу и записывать в нее результат из запроса(1) , потом использовать эту временную таблицу , колонки и результат возвращаются верно.
Подскажите пожалуйста  как можно решить  проблему получения результата запроса через OPENQUERY на стороне сервера ? (просто использование временной таблицы приводит к проблемам при работе многих пользователей)




Автор: Vaz007 23.10.2017, 13:24
Проблему решил с помощью изменения подхода в БД , создаю таблицу вношу в нее данные , потом курсором обновляю построчно. Также добавил для уникальности в таблицу два поля ИД_сессии и ИД_пользователя, чтобы не смешивать данные разных клиентов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)