0

1 つのページで 2 つの個別の foreach ループを実行したいのですが、SQL を 1 回だけ記述します。たとえば、次のコードを参照してください。最初の実行の id を持つ ul のみがあり、2 番目の ul は空です。

    <?php
        $mylist = 'SELECT * FROM myTable';
        $showlist = $pdo->prepare($mylist);
        $showlist->execute();
    ?>  
    <ul id="first">
        <?php foreach ($showlist as $rowid):;?>
            <li><?php echo $rowid['id'] ?></li>
        <?php endforeach; ?>  
    </ul>
    <ul id="second">
        <?php foreach ($showlist as $rowname):;?>
            <li><?php echo $rowname['name'] ?></li>
        <?php endforeach; ?>  
    </ul>

as の名前を変更すると、再び使用できるようになると思いましたが、そうではないようですか? ここで最善のアプローチは何ですか?

4

2 に答える 2

2

試す:

<?php
$mylist = 'SELECT * FROM myTable';
$showlist = $pdo->prepare($mylist);
$showlist->execute();
$result = $showlist->fetchAll();

foreach ($result as $rowid) {
    // do stuff
}

foreach ($result as $rowname) {
    // do stuff
}
于 2013-08-13T10:29:01.160 に答える
1

最初に要素を追加の配列にスタックする必要があります。

$mylist = 'SELECT * FROM myTable';
$showlist = $pdo->prepare($mylist);
$showlist->execute();

$rows = array();

foreach($showlist as $row) {
    array_push($rows, $row);
}

echo "<ul>";
foreach($rows as $row) {
    echo "<li>".$row['id']."</li>";
}
echo "</ul><ul>";
foreach($rows as $row) {
    echo "<li>".$row['name']."</li>";
}
echo "</ul>";
于 2013-08-13T10:31:29.427 に答える