[英]Mysql Stored Procedure - Return Table headers if no Data found
我们正在使用magento和PHP。 并具有一个存储过程,该存储过程进行一些处理,最后假设它会使用选择查询返回多个结果集。
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中找不到数据。 存储过程将不返回第三个行集/结果集。 因此,在上面的循环中,第三个调用$sql->fetchAll(PDO::FETCH_ASSOC);
将失败并导致常规错误。
有没有解决此问题的方法?
为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();
}
希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.