php foreach 循环行为

标签 php mysql arrays foreach

我正在尝试对 foreach 循环中的每个项目运行 mysql 查询。

在此示例中,数组 $subChild 中包含 ID 12。 当我尝试运行以下代码时,它仅输出一次与 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/

相关文章:

phpMyAdmin : import button not available

javascript - 奇怪的 HTML 行为

php - 如何显示具有相同ID的多维数组(PHP,Laravel)

java - Groovy ArrayList 对字符串感到困惑

javascript - 转换数组并反转

PHP Regex/Yii2 模式允许字母、数字、空格和一些符号/特殊字符

php - while 循环内有多个单选按钮

mysql - 按标签获取相关帖子

php - 使用codeigniter和jquery插入后如何获取最后插入的ID

arrays - 使用VBA数组将三张纸同步为一张