0

我正在使用 as400 db2 iseries,但无法从数据库中获取数据。如果我使用 for 循环它工作正常,但是当我使用 while 循环时会出错。在这里我更新代码供您参考...

代码:

$database = 'xxxxxx';
$user = 'xxx';
$password = 'xxx';
$hostname = 'x.x.x.x';

 include('adodb.inc.php');

     $db = ADONewConnection('odbc');
     $dsn = "DRIVER={iSeries Access ODBC Driver};SYSTEM=$hostname;DATABASE=$database;";
     if($db->Connect($dsn,$user,$password)){
         $query = "SELECT * FROM IND0301F.XMAGLF0 WHERE XMCDMA='I01' AND XMCDUB=''"; 
         $res = odbc_exec($query); 
         while( $row = odbc_fetch_array($res) ) { 
             echo $row['XMARCD'];  exit;
          } 
     }


<?php // no direct access 
  //defined('_JEXEC') or die('Restricted access');
?>
<?php
 set_time_limit(0); 
  //echo "Current User is ". $uname=$_SESSION['username']; 
?>
<?php
$database = 'IND0301F';
$user = 'QUSER';
$password = 'QUSER';
$hostname = '10.10.0.30';
?>



<?php
     include('adodb.inc.php');

     $db = ADONewConnection('odbc');
     $dsn = "DRIVER={iSeries Access ODBC Driver};SYSTEM=$hostname;DATABASE=$database;";
     if($db->Connect($dsn,$user,$password)){
         $sql_count = "SELECT COUNT(*) FROM IND0301F.XMAGLF0 WHERE XMCDMA='I01' AND XMCDUB=''"; 
         $rs_count = $db->Execute($sql_count);
         $result_count = $rs_count->GetArray();
         $count_rd = $result_count[0][0];  
         $sql = "SELECT * FROM IND0301F.XMAGLF0 WHERE XMCDMA='I01' AND XMCDUB=''";
         $rs = $db->Execute($sql);
         if (!$rs) echo "<p>no records</p>";
         else 
             {
             $result = $rs->GetArray();
?>


<tr>
<th>VRVCODE</th>
<th>Description</th>
<th>UOM</th>
<th>WH</th>
<th>Stock </th>
<th>Material Requested but PO not placed</th>
<th>Ordered</th>
<th>Items expected to deliver in 1 month</th>
<th>Items expected to deliver in 2 month</th>
<th>Items expected to deliver in 3 month</th>
<th>Items expected to deliver in morethan 3  month</th>
</tr>


<?php 
            for($i=0;$i<$count_rd;$i++)
            { ?>          
                <tr  class="odd_gradeX">     
<?php
                    for($j=0;$j<=53;$j++)
                        {  // 0 3 4 7 9 17 18 19 20 21 22 
                         if(($j != 1) && ($j != 2) && ($j != 10) &&  ($j != 5) && ($j != 6) && ($j != 8) && ($j != 11) && ($j != 12) 
                          && ($j != 13) &&  ($j != 14) && ($j != 15) && ($j != 16)
                          && ($j != 23) &&  ($j != 24) && ($j != 25) && ($j != 26) && ($j != 27)
                          && ($j != 28) && ($j != 29) 
                          && ($j != 30) &&  ($j != 36) && ($j != 37) && ($j != 38) && ($j != 39)
                          && ($j != 31) && ($j != 32)  && ($j != 33) && ($j != 34) && ($j != 35)&& ($j != 40) && ($j != 41) && ($j != 42) && ($j != 43) && ($j != 44) && ($j != 45) && ($j != 46) && ($j != 47) && ($j != 48) && ($j != 49) && ($j != 50) && ($j != 51) && ($j != 52) && ($j != 53)){
                        ?>
                        <?php 
                        if(($j == 9)||($j == 17)||($j == 18) ||($j == 19) ||($j == 20) ||($j == 21) ||($j == 22)){ ?>
                        <td align="right">
                        <?php }  elseif(($j == 3)){ ?>
                  <td align="left"> <?php }
                           else { ?> 
                  <td align="center"> <?php } ?> 
                           <?php  
                             if($result[$i][$j]!='') 
                             { 
                             ?>   <?php 
                             echo $result[$i][$j];  ?> <?php   
                             echo "&nbsp;";              
                             } }
                              ?>
                  </td>
                    <?php } ?>
          </tr><?php
            }  ?>



<?php
           }
     } else {
         echo "Not working";
         echo 'SQLSTATE: '.$db->ErrorNo()."<br>";
         echo 'Message: '.$db->ErrorMsg()."<br><br>";
     } 
?>
4

0 回答 0