2016-11-08 181 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

确保你现在已经发布了这个更改你的数据库密码... – 2016-11-08 10:48:42

回答

0

此语句提取第一个结果行,然后不用任何东西。因此,它被丢弃:

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

如果只处理一个小的行数,它可能会使用fetchall更方便。这将一次获取所有行,因此您可以检查有多少行,然后使用循环来处理它们。

+0

如果我回显$ rownum它给我3结果。 – Idro

+0

好的。我知道了。那么如何获取真正的行数和行数? – Idro

+0

我得到:致命错误:调用未定义的方法ldbproxy :: fetchall()。在ldbproxy里面什么是正确的命令? – Idro