php foreach循环行为

时间:2015-07-21 08:24:19

标签: php mysql arrays foreach

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

在此示例中,数组@中包含ID $subChild1。 当我尝试运行以下代码时,它只输出一次与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循环适用于数组中的每个项目

2 个答案:

答案 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();