我们正在使用magento和PHP。并且有一个存储过程进行一些处理,最后它假设使用select查询返回多个结果集。
Eg : Select * FROM table1;
Select * FROM table2;
Select * FROM table3;
问题是,并非所有表都包含数据。如果表存储过程中没有数据则不返回任何内容。在PHP中,我们使用for循环来获取数据。
for($i= 0; $i<=3; $i++){
$rowset = $sql->fetchAll(PDO::FETCH_ASSOC);
if ($rowset) {
switch ($i) {
case 0:
$spStatus = $rowset;
break;
case 1:
$boqSections = $rowset;
break;
case 2:
$boqEntries = $rowset;
break;
case 3:
$boqItems = $rowset;
break;
}
}
$sql->nextRowset();
}
因此,如果在表3中找不到数据。存储过程不会返回第3行集/结果集。因此,在上面的循环中,对$sql->fetchAll(PDO::FETCH_ASSOC);
的第三次调用将失败,从而导致一般错误。
是否有解决此问题的工作?
答案 0 :(得分:0)
为rowCount添加以下条件
for($i= 0; $i<=3; $i++){
$rowset = $sql->fetchAll(PDO::FETCH_ASSOC);
if ($rowset && $sql->rowCount() >0) {
switch ($i) {
case 0:
$spStatus = $rowset;
break;
case 1:
$boqSections = $rowset;
break;
case 2:
$boqEntries = $rowset;
break;
case 3:
$boqItems = $rowset;
break;
}
} else {
$spStatus = [];
$boqSections = [];
$boqEntries = [];
$boqItems = [];
}
$sql->nextRowset();
}
希望这会有所帮助。