我正在尝试tcpdf库,并且有两个单独的语句,每个语句都为我提供了某些信息。当我删除一个语句时,得到的PDF输出没有错误,现在,当我包含另一个语句时。我得到以下信息:
Call to a member function rowcount() on boolean in ...DIR... pointing to the second " if($query->rowcount() > 0) {"
有没有一种方法可以写这个?理想情况下,输出应该无缝地放在一张桌子上。另请注意,两个语句一旦单独执行,都不会出错。
N.B我以下面的示例为例,并不是真的不能将雇员表和收入表连接在一起。这个想法将对我如何在一个文件中使用两个不同的语句有所帮助。
require_once("header.php");
$tbl_header = '<table cellspacing="0" cellpadding="1" width="100%" border="1">';
$tbl_footer = '</table>';
$tbl ='';
//statement one
$result = $odb -> query('select * from employee');
if($result->rowcount() > 0) {
foreach ($result as $row) {
$EmployeeID = $row['EmployeeID'];
$EmployeeName = $row['EmployeeName'];
$tbl = '<tr>
<td width="50%" align="right">Emp ID:<br/> '.$EmployeeID.' </td>
<td width="50%" align="right">Emp Name:<br/> '.$EmployeeName.' </td>
</tr>';
}
}
//statement two
$query = $odb -> query('select * from income');
if($query->rowcount() > 0) {
foreach ($query as $rowb) {
$Code = $rowb['Code'];
$IncomeName = $rowb['IncomeName'];
$IncomeAmount = $rowb['IncomeAmount'];
$tblb .= '<tr>
<td width="20%" align="right">'.$Code.' </td>
<td width="40%" align="left">'.$IncomeName.' </td>
<td width="40%" align="right">'.$IncomeAmount.' </td>
</tr>';
}
}
$pdf->writeHTML($tbl_header. $tbl .$tblb . $tbl_footer, true, false, false, false, '');
$pdf->Output(__DIR__ .'/paid_'.date('m-d-Y_hia').'.pdf', 'FI');
答案 0 :(得分:1)
这种消息
Call to a member function rowcount() on boolean
通常意味着您的查询无效-而不是返回可以调用rowcount或fetch或诸如此类的结果对象,而是返回false
。因此,您需要查看查询失败的原因,并且最好在代码中进行处理。
由于您的代码未使用实时查询,因此无法说出为什么可能会失败。奇怪的是,您说它们在单独执行时都可以正常工作-您是否可以在任何情况下(即在您仅回显结果的标准页面中)一个接一个地执行它们?或者,如果您添加了try..catch并启用了PDO异常模式,这是否可以提供任何提示它可能失败的线索?
答案 1 :(得分:0)
我想出了问题所在。它使用了相同的连接变量,即$ odb,这引起了冲突。我创建了另一个连接,并给它一个不同的变量名,即$ db。这意味着我有两个不同的连接文件。请注意,我有header.php和headerb.php
require_once("header.php");
$tbl_header = '<table cellspacing="0" cellpadding="1" width="100%" border="1">';
$tbl_footer = '</table>';
$tbl ='';
//statement one
$result = $odb -> query('select * from employee');
if($result->rowcount() > 0) {
foreach ($result as $row) {
$EmployeeID = $row['EmployeeID'];
$EmployeeName = $row['EmployeeName'];
$tbl = '<tr>
<td width="50%" align="right">Emp ID:<br/> '.$EmployeeID.' </td>
<td width="50%" align="right">Emp Name:<br/> '.$EmployeeName.' </td>
</tr>';
}
}
//statement two
require_once("headerb.php");
$query = $db -> query('select * from income');
if($query->rowcount() > 0) {
foreach ($query as $rowb) {
$Code = $rowb['Code'];
$IncomeName = $rowb['IncomeName'];
$IncomeAmount = $rowb['IncomeAmount'];
$tblb .= '<tr>
<td width="20%" align="right">'.$Code.' </td>
<td width="40%" align="left">'.$IncomeName.' </td>
<td width="40%" align="right">'.$IncomeAmount.' </td>
</tr>';
}
}
$pdf->writeHTML($tbl_header. $tbl .$tblb . $tbl_footer, true, false, false, false, '');
$pdf->Output(__DIR__ .'/paid_'.date('m-d-Y_hia').'.pdf', 'FI');