PHP:foreach msqli_query问题

时间:2014-11-07 16:05:02

标签: php mysql foreach boolean

我现在正处理一小段代码的奇怪问题。我试图解决这个问题已经花了太多时间,所以我想我会问这里。我有一个整数数组($ childIDs),我想用它来单独调用MySQL数据库中的存储过程。连接设置正常,直到现在这个结构还没有给我任何问题。

$ childIDs 数组已正确设置,并且foreach循环 循环遍历数组中的每个整数 $ currentChild 。我首先注意到只有数组中的第一个项目会出现。经过一些测试,我发现在循环的第一次迭代之后,$ result被设置为bool(false)。话虽这么说,查询可以正常使用我在数组中使用的数字。

所以我的问题是为什么$result = mysqli_query($database, "CALL get_notes($currentChild);")除了foreach循环的第一次迭代之外都是一个假布尔?

以下是代码:

$childIDs = array();
$childIDs = json_decode($_GET['childids']);
$noteList = array();

foreach ($childIDs as $currentChild)
{
  if ($result = mysqli_query($database, "CALL get_notes($currentChild);"))
  {
    // Gathers all the notes for the child
    while($row = mysqli_fetch_array($result))
    {
      // does stuff with each row, for now I'll just use an example...
      var_dump($row);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

这由mysqli_next_result()解决。我需要在每次调用mysql_query()的新迭代之前释放mysqli。这是工作代码:

$childIDs = array();
$childIDs = json_decode($_GET['childids']);
$noteList = array();

foreach ($childIDs as $currentChild)
{
  if ($result = mysqli_query($database, "CALL get_notes($currentChild);"))
  {
    // Gathers all the notes for the child
    while($row = mysqli_fetch_array($result))
    {
      // does stuff with each row, for now I'll just use an example...
      var_dump($row);
    }
  }

  mysqli_next_result($database);
}