【问题标题】:php using while twicephp使用while两次
【发布时间】:2016-10-15 15:18:00
【问题描述】:

我目前是 php 和学习新手,但经过一些测试后,我知道 while 不能使用两次,但我不确定如何准确重置它。
我看到在某些情况下人们使用reset($variable),但这似乎不适用于我的情况。
万一这很重要,我正在尝试使用mysqli 来检索我的下拉菜单作为选择,第一个有效,但第二个根本无效。

    <?php 
                    echo '<select>';
                    while(list($stateID, $stateName) = $result->fetch_row())
                    {   
                echo '<option value="$stateName">';
                echo "$stateName";
                echo '</option>';
                    } 
                    echo '</select>';
                    ?>
                <br>
                <br>
                To: &nbsp; &nbsp;
            <?php 
                 echo '<select>';
                    while(list($stateID, $stateName) = $result2->fetch_row())
                    {   
                echo '<option value="$stateName">';
                echo "$stateName";
                echo '</option>';
                    }
            echo '</select>';
                    ?>

另外,如果需要,这是我在 mysql 中搜索的结果。

    <?php
include 'connect.php';
$query = "SELECT * FROM LOCATION";
$result = $mysqli->query($query, MYSQLI_STORE_RESULT);
$result2 = $mysqli->query($query, MYSQLI_STORE_RESULT);
if(!$result) {
    echo($mysqli->error);
    exit();
}
?>

虽然这种方法适用于我创建 2 个变量的结果 1 和 2,但我觉得这不是正确的方法,尤其是在我需要一遍又一遍地重用相同代码的情况下。

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    您在那些while 语句中所做的就是遍历您从数据库中获得的行列表。确实不能对列表进行两次迭代*,因此您可以尝试不同的方法:对列表进行迭代一次,然后保存结果以便重复使用.例如:

    在查询数据库后执行此操作:

    $data = [];
    while(list($stateID, $stateName) = $result->fetch_row())
    {   
        $data[] = [ 'stateID' => $stateID, 'stateName' => $stateName ];
    }
    

    我在这里所做的只是遍历行列表并将数据保存到变量中。现在您可以使用该变量而不是尝试访问 MySQL 结果:

    echo '<select>';
    foreach ($data as $d) {
        echo '<option value="'.$d['stateName'].'">";
        echo $d['stateName'];
        echo '</option>';
    }
    

    而且由于数据存储在数组中,因此您可以随意使用它。

    * 可能可以重置 MySQL 结果集上的指针,但我的方法更简单并且(可能)性能更好一些,因为您已将所需数据复制到普通的旧 PHP 数组

    【讨论】:

      猜你喜欢
      • 2011-09-29
      • 2014-08-16
      • 2013-04-05
      • 2016-03-24
      • 2012-11-05
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2013-02-16
      相关资源
      最近更新 更多