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>

しかし、フェッチされたレコードを使用して2番目のドロップダウンリストを作成したい場合、何も表示されませんでした。そのため、別のクエリを作成する必要があると思いました。私はそれをしました、そして、2番目のものは正しく作りました。
しかし、私の質問は次のとおりです。フェッチされたデータを複数回使用することはできませんか?3番目のドロップダウンが必要な場合は、別のクエリを作成する必要がありましたか?

4

3 に答える 3

3

条件付きループによっては、を使用して配列ポインタをリセットする必要がある場合がありますreset()

アップデート:

結果セットをリセットするdata_seek()には、他の回答に記載されているように、別のアレイを使用または構築できます。

于 2012-11-14T21:12:16.193 に答える
3

ループ中にフェッチする代わりに$r = $q->fetchAll()、ループスルーを使用して、フェッチした結果を配列に保存します。$r

于 2012-11-14T21:16:27.897 に答える
1

初めて使用するときにデータを配列に保存して、同じデータについてデータベースを再度煩わせる必要がないようにしてください。

于 2012-11-14T21:14:42.297 に答える