我正在尝试为foreach循环中的每个项运行一个mysql查询。
在此示例中,数组@
中包含ID $subChild
和1
。
当我尝试运行以下代码时,它只输出一次与ID 2
相关的信息。
数组var_dump:1
MySQL表:
array(2) { [0]=> int(1) [1]=> int(2) }
继承我的代码:
sectionID | sectionName | sectionPerms
---------------------------------------
1 | Demo Sub | 1
2 | Demo Sub 2 | 1
此代码的输出类似于:
foreach($subChild as $sub) {
$getSub = $con->prepare("SELECT sectionID,sectionName FROM sections WHERE sectionID=? AND sectionPerms=1");
$getSub->bind_param("i", $sub);
$getSub->execute();
$getSub->store_result();
$getSub->bind_result($sectionID,$sectionName);
while($getSub->fetch()) {
?>
<td><a href="./view.php?t=cat&id=<?php echo $sectionID; ?>"><?php echo $sectionName; ?></a></td>
<?php
};
$getSub->close();
};
它甚至没有重复两次。
我将如何解决此问题,以便foreach循环适用于数组中的每个项目?
答案 0 :(得分:0)
在代码中避免使用;
foreach($subChild as $sub) {
$getSub = $con->prepare("SELECT sectionID,sectionName FROM sections WHERE sectionID=? AND sectionPerms=1");
$getSub->bind_param("i", $sub);
$getSub->execute();
$getSub->store_result();
$getSub->bind_result($sectionID,$sectionName);
while($getSub->fetch()) {
?>
<td><a href="./view.php?t=cat&id=<?php echo $sectionID; ?>"><?php echo $sectionName; ?></a></td>
<?php
}
$getSub->close();
}
答案 1 :(得分:0)
尝试在循环之后关闭连接(并且,就此而言,您可以在循环之前准备查询):
$getSub = $con->prepare("SELECT `sectionID`, `sectionName` FROM `sections` WHERE `sectionID`=? AND `sectionPerms`=1");
foreach($subChild as $sub) {
$getSub->execute(array($sub));
$data = $getSub->fetch(PDO::FETCH_ASSOC);
echo "<td><a href='./view.php?t=cat&id={$data["sectionID"]}'>{$data["sectionName"]}</a></td>";
};
$getSub->close();