2016-11-08 4 views
0

Я пытаюсь сделать этот скрипт:PHP и DB2 работают вместе

//Agent D4 OFFLINE events last 24h 

     $q_d4_offline_last24h = "select distinct NODE, LASTOCCURRENCE, INPS_CLOSE_TIMESTAMP 
            from REPORTER.REPORTER_STATUS 
            where ALERTKEY = 'M_SW_MID_MON_SER_STS_006C_ALL' 
            and NODEALIAS like '%:D4' 
            and LASTOCCURRENCE > DATE(CURRENT_DATE -1 DAYS)"; 


     $DB2_REPORTER_conn = new ldbproxy(); 
     if(!$DB2_REPORTER_conn->connect_db2("192.168.8.245:50001", "REPORTER", "itmuser", "tivoli")) die ('E:Connessione al DB2 fallita:' . $DB2_REPORTER_conn->errorMsg); 
     $connettore = $DB2_REPORTER_conn->query($q_d4_offline_last24h) or die("E:Errore nella query: " . $DB2_REPORTER_conn->errorMsg); 


     $rownum = count($DB2_REPORTER_conn->fetch($connettore)); 


     if($rownum > 0) { 

     $prev_node=NULL; 


     echo "\n - Eventi di offline relativi ad agent ITCAM for SOA rilevati nelle ultime 24 ore:\n\n"; 

     while($row = $DB2_REPORTER_conn->fetch($connettore)){ 



      if ($row['NODE'] != $prev_node) { 

       echo "\n\t" . $row['NODE']; 
       $prev_hostname = $row['NODE']; 
      } 

       echo "\n\t\tData inizio: " . substr($row['LASTOCCURRENCE'],0,-2); 

       if($row['INPS_CLOSE_TIMESTAMP'] == '1970-01-01 01:00:00.0') 
       echo "\n\t\tData fine: n/a"; 

       else 
        echo "\n\t\tData fine: " . substr($row['INPS_CLOSE_TIMESTAMP'],0,-2) . "\n"; 

     } 
     } 

Обычно запрос я использую получить из 3 строки, как результат. Я не понимаю, почему на выходе я получаю только последние две строки, он всегда прыгает в первую строку.

Вы можете мне помочь?

+0

Убедитесь, что вы изменили свой пароль в БД теперь, когда вы разместили это ... –

ответ

0

Это утверждение извлекает первую строку результата и не использует ее ни для чего. Так он получает отбрасываются:

$rownum = count($DB2_REPORTER_conn->fetch($connettore)); 

Если вы только имеете дело с небольшим числом строк, это, вероятно, будет более удобно использовать fetchall. Это позволит получить сразу все строки, поэтому вы можете проверить, сколько их есть, а затем использовать цикл для их обработки.

.

+0

Если я эхо $ rownum, это дает мне 3 результата. – Idro

+0

А, ок. Я понял. Итак, как получить реальное количество строк и строк? – Idro

+0

Я получаю: Неустранимая ошибка: вызов неопределенного метода ldbproxy :: fetchall(). Внутри ldbproxy какая правильная команда? – Idro

Смежные вопросы