2013-08-13 4 views
0

한 페이지에서 두 개의 별도 foreach 루프를 실행하고 싶지만 SQL을 한 번만 작성하십시오. 예를 들어 아래 코드를 보자. 첫 번째 실행 ID가 ul 인 경우에만 두 번째 ul은 비어 있습니다.PHP 한 페이지에서 배열을 여러 번 실행하십시오.

<?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> 

내가 생각 이름 바꾸기 중동이 다시 사용하지만,이 경우 될 것 같지 않습니다 허용하는 것처럼? 가장 좋은 방법은 무엇입니까?

+1

가능한 중복 http://stackoverflow.com/questions/278259/is- it-possible-to-rewind-a-pdo-result –

+0

@AlmaDoMundo 박람회 통화가 중복되었습니다. 나는이 두 가지 대답이 다른 사이트보다 낫다고 생각하지만 어떻게 작동시키는 지에 대한 예제를 제시하는 측면에서? – ak85

답변

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 
} 
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>"; 
관련 문제