while($ row = mysqli_fetch_array($ result)){echo $ row ['sth']; .....}
当我第一次改变循环到第二次时,我得到一个无限循环。有没有办法在while循环之前做fetch_array
而没有得到无限循环?
我正在尝试这个的原因是......:
所以我通过select multiple name=options[]
传递$_POST
然后我使用foreach($_POST['options'] as $option)
来选择其字段值与$option
匹配的索引。之后,如果我按照上面的1.
执行while循环,我只会得到最后options[]
的元素。
所以我想将mysqli_fetch_array
的结果附加到数组$row
,然后像2.
那样执行一个while循环但是我得到一个无限循环,如上所述。
我知道我的解释有点令人困惑....如果到目前为止还不清楚,请在下面阅读更多内容。我在提供更多代码时会详细解释。
========================================================================
if(isset($_POST['options'])) {
foreach($_POST['options'] as $option) {
$query = "SELECT * FROM users WHERE stdYr = '$option'";
$result = mysqli_query($db_conx, $query) or die("Error in ".$query."<br>".mysqli_error($db_conx));
}
}
}
while($row=mysqli_fetch_array($result)) {}
使用此代码,例如,当传递数组选项[option1,option2,option3]时,结果仅输出选项[option3]的元素。在foreach循环中覆盖option1和option2的查询输出
所以我想出了一个尝试在foreach循环中声明fetch_array
并附加到$ result的结果:
========================================================================
if(isset($_POST['options'])) {
foreach($_POST['options'] as $option) {
$query = "SELECT * FROM users WHERE stdYr = '$option'";
$result = mysqli_query($db_conx, $query) or die("Error in ".$query."<br>".mysqli_error($db_conx));
$row.=mysqli_fetch_array($result)
}
}
}
while($row) {}
但是会导致无限循环.....
有人可以帮忙吗?如果这没有意义,请告诉我......谢谢! :d
答案 0 :(得分:1)
使用do-while而不是while。这样你可以将第一个mysql_fetch_array()
调用移出循环:
<?php
// code
$row=mysql_fetch_array($result);
if($row) {
do
echo $row["sth"];
while($row=mysql_fetch_array($result));
}
//code
?>
答案 1 :(得分:0)
问题是,你总是在循环中覆盖你的变量。将它用作数组。
编辑:我的错,我已将结果添加为数组,而不是行。
改变这个:
foreach ($_POST['options'] as $option) {
$query = "SELECT * FROM users WHERE stdYr = '$option'";
$result = mysqli_query($db_conx, $query) or die("Error in " . $query . "<br>" . mysqli_error($db_conx));
$row[] = mysqli_fetch_array($result);
}
(在[]
之后添加$row
,现在它是$row[]
。在循环之外,说var_dump($row);
在此之后,您可以设置新的foreach
循环。不要添加while循环。