显示所有匹配值而不是第一个
问题描述:
我创建了一个查询来显示报告。查询从几个不同的表中获取数据是很好的,但我无法弄清楚如何在表中回显多个匹配值。例如表格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;
}
答
使用 '为' 经营者
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");
}
您的'exit'语句会在第一次迭代while循环后终止您的脚本,因为它出现在第一次迭代结束时。因此,以下迭代永远不会生成,并且只显示第一条记录。 – coderodour
@coderodour由于vtiger处理程序工作的方式,这是最终需要的,删除这意味着它不会停止等待响应,我正在寻找另一种解决方法。 – Diddy
如果你暗示在任何情况下都需要'exit',你只需要将它从'while'循环中移出并放在脚本结尾之前就可以显示所有记录。 –