内部循环不工作.它限制为仅一行


Inner while loop not working.. it limit to only one row

可能的重复项:
内部 while 循环不起作用

这是我项目网页上的代码捏合。在这里,我想显示用户选择的类别,然后想要显示属于类别的主题。在那里,用户可以拥有 1 个以上的类别,没问题,我可以在第一个循环中打印所有这些类别......但问题是当我尝试打印主题时,结果它只有一行。每个类别中有更多的科目。谁能告诉我发生了什么?

这是我的代码。注意:两个查询都正常工作。我尝试了那些用户mysql客户端程序。

    <?php
    require_once ('../../includes/config.inc.php');
    require_once( MYSQL1 );
    $outQuery = "SELECT institute_category.category_id, category_name
            FROM institute_category
            INNER JOIN category ON institute_category.category_id = category.category_id
            WHERE institute_category.institute_id = $instituteId";  
    $outResult = mysqli_query( $dbc, $outQuery);

    while ( $outRow = mysqli_fetch_array ( $outResult, MYSQLI_ASSOC) )   {
        $categoryId = $outRow['category_id']; 
        $category = $outRow['category_name']; 
        echo '<fieldset class="alt">
                <legend><span>Category : <em style="color: red;">' . $category . '</em></span></legend>';

                    $innerQuery = "SELECT category_subject.category_id, category_subject.subject_id, subjects
                            FROM category_subject
                            INNER JOIN category ON category_subject.category_id = category.category_id
                            INNER JOIN subject ON category_subject.subject_id = subject.subject_id
                            WHERE category_subject.category_id = $categoryId";  
                    $innerResult = mysqli_query( $dbc, $innerQuery);
                    $c = $i = 0;
                        echo '<table class="form_table" ><tr>'; 
                                while($innerRow = mysqli_fetch_array( $innerResult, MYSQLI_ASSOC  )){
                                    // if remainder is zero after 2 iterations (for 2 columns) and when $c > 0, end row and start a new row:  
                                    if( ($c % 2) == 0 && $c != 0){
                                        echo "</tr><tr>";
                                    }
                                    echo '<td width="50%"><input type="checkbox" name="subject[]"  value="' . $innerRow['category_id'] . ":" . $category . ":"  . $innerRow['subject_id'] . ":". $innerRow['subjects'] . '" />&nbsp;&nbsp;' . $innerRow['subjects'] . '</td>' . "'n";
                                    $c++; 
                                } // while..
                                    // in case you need to fill a last empty cell:
                                    if ( ( $i % 2 ) != 0 ){
                                    // str_repeat() will be handy when you want more than 2 columns
                                      echo str_repeat( "<td>&nbsp;</td>", ( 2 - ( $i % 2 ) ) );
                                    }
                                echo "</tr></table>";   
    } 
echo '</fieldset>'; 
?>

这是我的网页

    good<fieldset class='alt'>
<legend><span>Category : <em style='color: red;'>grade 1 - 4</em></span></legend>
    <table class='form_table'><tr>
    <tr>
        <td width='50%'><input type='checkbox' name='subject[]' value='2:grade 1 - 4:2:Art' />&nbsp;&nbsp;Art</td>
        <td width='50%'><input type='checkbox' name='subject[]' value='2:grade 1 - 4:3:Art & Craft' />&nbsp;&nbsp;Art & Craft</td>
    </tr>
    <tr>
        <td width='50%'><input type='checkbox' name='subject[]' value='2:grade 1 - 4:4:Bialogy' />&nbsp;&nbsp;Bialogy</td>
        <td width='50%'><input type='checkbox' name='subject[]' value='2:grade 1 - 4:5:Buddhism' />&nbsp;&nbsp;Buddhism</td>
    </tr>
    </table>
<fieldset class='alt'>
    <legend><span>Category : <em style='color: red;'>grade 5 (scholarship exam)</em></span></legend>
        <table class='form_table'><tr>
            <tr>
            <td width='50%'><input type='checkbox' name='subject[]' value='3:grade 5 (scholarship exam):1:Agro & Food Technology' />&nbsp;&nbsp;Agro & Food Technology</td>
            <td width='50%'><input type='checkbox' name='subject[]' value='3:grade 5 (scholarship exam):2:Art' />&nbsp;&nbsp;Art</td>
            </tr>
    <tr>
        <td width='50%'><input type='checkbox' name='subject[]' value='3:grade 5 (scholarship exam):3:Art & Craft' />&nbsp;&nbsp;Art & Craft</td>
        <td width='50%'><input type='checkbox' name='subject[]' value='3:grade 5 (scholarship exam):4:Bialogy' />&nbsp;&nbsp;Bialogy</td>
    </tr>
    </table>
        <fieldset class='alt'>
    <legend><span>Category : <em style='color: red;'>grade 6 - 10</em></span></legend>
        <table class='form_table'><tr>
    <tr>
        <td width='50%'><input type='checkbox' name='subject[]' value='4:grade 6 - 10:2:Art' />&nbsp;&nbsp;Art</td>
        <td width='50%'><input type='checkbox' name='subject[]' value='4:grade 6 - 10:3:Art & Craft' />&nbsp;&nbsp;Art & Craft</td>
    </tr>
    <tr>
        <td width='50%'><input type='checkbox' name='subject[]' value='4:grade 6 - 10:4:Bialogy' />&nbsp;&nbsp;Bialogy</td>
        <td width='50%'><input type='checkbox' name='subject[]' value='4:grade 6 - 10:5:Buddhism' />&nbsp;&nbsp;Buddhism</td>
    </tr>
    </table>
</fieldset> 

任何意见都非常感谢。.

谢谢

由于您将内部循环中的行提取到关联数组中,并且键是category_id,因此每次迭代都将替换前一次迭代的结果。 我认为你应该改用mysqli_fetch_row()