2015-05-10 3 views
1

царапает мне голову, почему код ниже не работает, нужны свежие глаза. Попробовали SQL-запрос в RazorSQL, и он возвращает значения, но я не могу заставить это работать в php. Никаких ошибок соединения или утверждения. Можем предположить, что это имеет какое-то отношение к «i5_libl», но havent нашел какие-либо обходные пути. Есть идеи?DB2 SQL Query через PHP не возвращает результаты

<?php 

class employees 
{ 
    private $employees = array(); 
    private $db_host = '*LOCAL'; 
    private $db_options = array(
     'i5_naming' => DB2_I5_NAMING_ON, 
     'i5_libl' => 'CLTDTA CLTPAY' 
    ); 

    public function getList() { 
     $connection = db2_connect($this->db_host,$GLOBALS['db_user'],$GLOBALS['db_password'],$this->db_options); 
     echo db2_conn_error(); 
     echo db2_conn_errormsg(); 
     $sql='SELECT F0101.ABAN8, F0101.ABALPH FROM F0101 INNER JOIN FP0102 ON F0101.ABAN8=FP0102.VEAN8 WHERE FP0102.VESTAT=\'\''; 
     $stmt= db2_prepare($connection,$sql); 
     echo db2_stmt_error(); 
     echo db2_stmt_errormsg(); 
     $result= db2_execute($stmt); 
     while ($row = db2_fetch_assoc($stmt)) { 
      echo $row['ABAN8']; 
     } 
     db2_close($connection); 
     return true;    
    } 

} 
?> 

!! Обновление:

Я попытался переключить DB2_I5_NAMING_ON и DB2_I5_NAMING_OFF с исправлениями в запрос, по-прежнему ничего. Мне кажется, что это больше связано с конкретной библиотекой (CLTDTA). Когда я запускаю запрос SELECT для ванили на CLTPAY, я получаю результат в порядке. Когда я попробую эквивалент на CLTDTA, я не получаю результата. Пользователь использует список системных библиотек, который содержит ссылки на все соответствующие библиотеки, включая CLTDTA.

+0

У меня нет ничего, чтобы протестировать прямо сейчас, но я верю, установив DB2_I5_NAMING_ON, вам нужно квалифицировать свои файлы, используя '/' вместо '.'. Я бы попытался отключить его, чтобы увидеть, есть ли какие-либо изменения в поведении. –

+0

@Bob Это было [изменено в 2012 году] (https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/System% 20naming% 20convention% 20расширенный% 20to% 20permit% 20% 28slash% 29% 20 и% 20% 28dot% 29% 20qualifiers) с технологией Refresh (т.е. группа PTF, как пакет обновления). Пока система поддерживается даже дистанционно до настоящего времени, это не должно быть проблемой. – WarrenT

+0

Я попытался переключить DB2_I5_NAMING_ON и DB2_I5_NAMING_OFF с исправлениями в запрос, все еще ничего. Мне кажется, что это больше связано с конкретной библиотекой (CLTDTA). Когда я запускаю запрос SELECT для ванили на CLTPAY, я получаю результат в порядке. Когда я попробую эквивалент на CLTDTA, я не получаю результата. Пользователь использует список системных библиотек, который содержит ссылки на все соответствующие библиотеки, включая CLTDTA. –

ответ

0

Ошибка эхо-сигнал для каждого выполняемого этапа кроме для выполнения. Добавьте те же запросы после EXECUTE, как это делается после шагов CONNECT и PREPARE.

Если все еще ничего не видно, включите функцию обмена сообщениями отладки [через соединение, по заданию стартовой службы (STRSRVJOB), затем запустите Debug (STRDBG) в задании, поддерживающем соединение, или с помощью возможностей QAQQIII] и просмотрите рабочий журнал для обслуживания обслуживания соединения. Вероятно, возможно, также начнется подробный мониторинг базы данных; Запустите монитор базы данных (STRDBMON), чтобы проверить входящие операторы. Если по-прежнему нет ничего очевидного из них, то также получить трассировку работы, а затем проверить данные трассировки [т. эффективный отладка трассировка DATA-записей и выполнение FLOW-записей], что надлежащие \ ожидаемые файлы открываются запросом запроса.