我现在正处理一小段代码的奇怪问题。我试图解决这个问题已经花了太多时间,所以我想我会问这里。我有一个整数数组($ 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);
}
}
}
答案 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);
}