3

我正在用 PHP 和 MySQL 编写一个会计系统,并使用 PDO 来处理数据库。在付款页面中,我必须有 2 个来自已定义帐户的下拉列表。
首先,我使用了一个简单的查询来获取帐户的所有记录。

$sql = "SELECT id,title FROM tbl_accounts WHERE uid = ? ORDER BY title";
$q = $db->prepare($sql);
$q->execute(array($uid));

我已将获取的行放在下拉列表中,一切正常。

<select name="account_id2" class="medium" id="account_id2">
    <option value="null">---</option>
    <?php
    while ($r = $q->fetch()) {
        echo '<option value="'.$r['id'].'">'.$r['title'].'</option>';
    }
    ?>
</select>

但是当我想使用获取的记录制作第二个下拉列表时,什么都没有显示。所以我想我必须为它创建另一个查询。我做到了,第二个做对了。
但我的问题是:我们不能使用获取的数据超过 1 次吗?如果我需要第三个下拉菜单,我必须编写另一个查询?

4

3 回答 3

3

根据您的条件循环,您可能需要使用reset().

更新:

要重置结果集,您可以使用data_seek()或构建一个单独的数组,如其他答案中所述。

于 2012-11-14T21:12:16.193 回答
3

$r = $q->fetchAll()使用then 循环将获取的结果保存到数组中$r,而不是在循环时获取。

于 2012-11-14T21:16:27.897 回答
1

为什么不在第一次使用时将数据保存到数组中,这样您就不必为相同的数据再次打扰您的数据库。

于 2012-11-14T21:14:42.297 回答