我正在尝试对 foreach 循环中的每个项目运行 mysql 查询。
在此示例中,数组 $subChild
中包含 ID 1
和 2
。
当我尝试运行以下代码时,它仅输出一次与 ID 1
相关的信息。
数组 var_dump: array(2) { [0]=> int(1) [1]=> int(2) }
MySQL 表:
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();
};
此代码的输出类似于:
<td><a href="./view.php?t=cat&id=1">Sub Section 1</a></td>
它甚至不会重复两次。
我该如何解决这个问题,以便 foreach 循环适用于数组中的每个项目?
最佳答案
尝试在循环之后关闭连接(就此而言,您可以在循环之前准备查询):
$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();
关于php foreach 循环行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31533884/