php中的嵌套循环与预期的工作方式不同

时间:2015-09-04 09:09:59

标签: php mysql

我试图在循环中检索MySQL数据。但只有第一个显示数据。其他人都是空的。这就是它现在的工作方式 -

LINK

这是我的代码:

<?php

for ($i = 1; $i <= $quantity; $i++) {
    echo'
        <tr>
            <!-- <td><input class="case" type="checkbox"/></td> -->                         
            <td><input type="text" data-type="productCode" name="itemNo[]" id="itemNo_1" class="form-control autocomplete_txt" autocomplete="off" placeholder="Enter IMEI number"></td>
            <td><select name="brand[]"  class="form-control autocomplete_txt">';
    while ($row = mysqli_fetch_array($result_brand)) {
        echo '<option value="' . $row['brand'] . '">' . $row['brand'] . '</option>';
    }
    echo'  </select> </td> <td><select name="model[]"  class="form-control autocomplete_txt" >';
    if (mysqli_num_rows($result_model) > 0) {
        // output data of each row
        while ($row_model = mysqli_fetch_assoc($result_model)) {
            echo ' <option value="' . $row_model['model'] . '">' . $row_model['model'] . '</option>';
        }
    }
    echo'   
        </select>                       
        </td>
        <td><input type="text" data-type="productName" name="brand[]" id="itemName_1" class="form-control autocomplete_txt" autocomplete="off" placeholder="Brand"></td> 
        <td><input type="text" data-type="productName" name="model[]" id="itemName_2" class="form-control autocomplete_txt" autocomplete="off" placeholder="Model"></td> 
        <td><input type="number" name="price[]" id="price_1" class="form-control changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
        <td><input type="number" value="1" name="quantity[]" id="quantity_1" class="form-control changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;" disabled></td>
        <!-- <td><input type="number" name="total[]" id="total_1" class="form-control totalLinePrice" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;" disabled></td> -->                             
    </tr>
    ';
}
?>

我不确定实际上是什么问题。

1 个答案:

答案 0 :(得分:0)

问题是,在mysqli循环运行一次后,while结果的游标指向结果的末尾。

您必须在for循环的开头调用mysqli_data_seek,将游标重置为第一个数据集:

for($i=1; $i<=$quantity; $i++) {
    mysqli_data_seek($result_brand, 0);
    mysqli_data_seek($result_model, 0);
...

另一种解决方案是在while循环之前运行for次循环并将结果存储在数组中,以便在{{1}内使用数组而不是mysqli_fetch_array循环。