Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 而循环仅在第一次运行时有效_Php_Mysql - Fatal编程技术网

Php 而循环仅在第一次运行时有效

Php 而循环仅在第一次运行时有效,php,mysql,Php,Mysql,foreach打印出了每个标题,我得到了所有的手风琴,但除了第一个手风琴之外,所有的东西都是空的。我错过了什么 $result2 = mysqli_query($con, "SELECT * FROM sections ORDER BY `order`"); $sectionnames = array(); while($row = mysqli_fetch_array($result2)) { $sectionnames[] = $row['sectionnam

foreach打印出了每个标题,我得到了所有的手风琴,但除了第一个手风琴之外,所有的东西都是空的。我错过了什么

$result2 = mysqli_query($con, "SELECT * FROM sections ORDER BY `order`");
    $sectionnames = array();
    while($row = mysqli_fetch_array($result2)) {
        $sectionnames[] = $row['sectionname'];
    }

    $result = mysqli_query($con,"SELECT * FROM faq ORDER BY `order`");

    foreach ($sectionnames as $sectionname) {
            echo '<h3 id="sectionname">' . $sectionname . '</h3>';
            echo '<div id="accordion">';
            while($row = mysqli_fetch_array($result)) {
                if ($sectionname == $row['section']) {
                    echo '<h3>' . $row['heading'] . '</h3>';
                    echo '<div>' . $row['content'] . '</div>';
                } 
           }
           echo '</div>';
    }
$result2=mysqli\u query($con,“按“顺序”从节中选择*);
$SECTIONNAME=array();
while($row=mysqli\u fetch\u数组($result2)){
$sectionname[]=$row['sectionname'];
}
$result=mysqli\u query($con,“按订单从faq订单中选择*”);
foreach($sectionname作为$sectionname){
回显“.$sectionname.”;
回声';
while($row=mysqli\u fetch\u数组($result)){
如果($sectionname==$row['section']){
回显'.$row['heading'].';
回显'.$row['content'].';
} 
}
回声';
}
echo';
while($row=mysqli\u fetch\u数组($result))
这将有效地消耗查询结果中的每一行,并将其放在第一个手风琴中


对于其他每一个
$sectionname
,您的
$result
将已经耗尽,因此将生成空的
accordion
s,因为您没有实现任何新的查询。

如果没有您的模式,我不能确定,但看起来faq是按sectionname一节关联的。如果这是真的,像这样:

foreach ($sectionnames as $sectionname) {
        echo '<h3 id="sectionname">' . $sectionname . '</h3>';
        echo '<div id="accordion">';
        $result = mysqli_query($con,"SELECT * FROM faq where section = '$sectionname' ORDER BY `order`");
        while($row = mysqli_fetch_array($result)) {   
           echo '<h3>' . $row['heading'] . '</h3>';
           echo '<div>' . $row['content'] . '</div>';    
       }
       echo '</div>';
}
foreach($sectionname作为$sectionname){
回显“.$sectionname.”;
回声';
$result=mysqli_query($con,“从faq中选择*,其中section='$sectionname'按'ORDER`'排序);
而($row=mysqli_fetch_数组($result)){
回显'.$row['heading'].';
回显'.$row['content'].';
}
回声';
}

我只需要在while循环之前添加此代码

mysqli_data_seek($result, 0);

所以我需要做什么来修复它这是正常的行为。您正在从资源中逐行获取数据。完成后,资源指针位于末尾。这就是为什么你必须重置它。相反,您可以在while之前创建一个空数组,并在其中执行$data[]=$row。您的$data变量现在将包含您可以重用的所有结果。这可能会起作用,但正如Arthur所指出的,它是通过对结果集进行无用的重复扫描来实现的。您应该让SQL来完成这项工作。看看我的答案,看看如何在这个方向上做得更好。
mysqli_data_seek($result, 0);