显示所有匹配值而不是第一个

问题描述:

我创建了一个查询来显示报告。查询从几个不同的表中获取数据是很好的,但我无法弄清楚如何在表中回显多个匹配值。例如表格vtiger_addisa有多个我需要显示的新当前值。显示所有匹配值而不是第一个

$sql = $adb->query("SELECT * 
       FROM vtiger_isa, vtiger_addisa, vtiger_contactdetails 
       WHERE vtiger_isa.relatedclient = vtiger_addisa.addrelatedclient 
       AND vtiger_addisa.addrelatedclient = vtiger_contactdetails.contactid 
       AND vtiger_isa.relatedclient = $relatedclient 
       AND vtiger_isa.policynumber = $policynumber"); 


      //Uncomment lines below for testing sql    
      //echo $sql; 
      //exit; 
      while ($sql->fetchInto($row)) { 
    // Assuming DB's default fetchmode is DB_FETCHMODE_ORDERED 
    echo $row['firstname'] . "\n"; 
    echo $row['lastname'] . "\n"; 
    echo $row['policynumber'] . "\n"; 
    echo $row['newcurrentamount'] . "\n"; 
    echo $row['newcurrentamount'] . "\n"; 
    echo $row['currentamount'] . "\n"; 



    exit; 

} 
+4

您的'exit'语句会在第一次迭代while循环后终止您的脚本,因为它出现在第一次迭代结束时。因此,以下迭代永远不会生成,并且只显示第一条记录。 – coderodour

+0

@coderodour由于vtiger处理程序工作的方式,这是最终需要的,删除这意味着它不会停止等待响应,我正在寻找另一种解决方法。 – Diddy

+0

如果你暗示在任何情况下都需要'exit',你只需要将它从'while'循环中移出并放在脚本结尾之前就可以显示所有记录。 –

使用 '为' 经营者

select newcurrentamount as a, newcurrentamount as b from vtiger_addisa 

P.S-尽量避免 '*' 和只使用必要的列。

您可以获得如下的多行结果。

global $adb; 
$sql = $adb->query("SELECT * FROM vtiger_isa, vtiger_addisa, vtiger_contactdetails 
    WHERE vtiger_isa.relatedclient = vtiger_addisa.addrelatedclient 
    AND vtiger_addisa.addrelatedclient = vtiger_contactdetails.contactid 
    AND vtiger_isa.relatedclient = $relatedclient 
    AND vtiger_isa.policynumber = ?"); 

    $params = array($policynumber); 
    $result = $adb->pquery($query, $params); 
    $noOfRows = $db->num_rows($result); 

    for($i=0; $i<$noOfRows; ++$i) { 
     $firstname = $db->query_result($result, $i, "firstname"); 
     $lastname = $db->query_result($result, $i, "lastname"); 
     $policynumber = $db->query_result($result, $i, "policynumber"); 
     $newcurrentamount = $db->query_result($result, $i, "newcurrentamount"); 
     $currentamount = $db->query_result($result, $i, "currentamount"); 
    }