2011-11-23 3 views
1

내 사이트에 페이지 이름의 데이터베이스가 있습니다. 쿼리를 반복하여 각 페이지 이름을 출력하고 싶습니다.쿼리 결과의 마지막 항목 - PHP

// Site Menu Items 
try { 
    $mds_system1 = new PDO('mysql:dbname=mds_system;host=127.0.0.1', 'root', ''); 
} catch (PDOException $ex) { 
    echo 'Connection failed: ' . $ex->getMessage(); 
} 

$sql = "SELECT longName, shortName, `position`, standalone FROM `site-menu`"; 
$sitemenu = $mds_system1->query($sql); 

내가 다음 쿼리를 통해 루프 그래서 (사이트의 페이지를 편집 할 수있는 CMS의 일부) :

$n=1; 
    foreach ($sitemenu as $item) { 
     echo "<a href='?page=edit&amp;edit=".$item['shortName']."' target='_self'>"; 

     if ($n==count($sitemenu)) { 
      echo $item['longName']."</a><br />"; 
     } 
     else { 
      echo $item['longName']."</a>&nbsp;|&nbsp;"; 
     } 
     $n++; 
    } 

내가 거기 싶습니다 내가 PDO를 사용하여 내 쿼리를 수행 한 마지막 결과가 끝나면 구분 기호가되지 않아야합니다. 많은 코드 예제에 따르면이 코드 이어야합니다. 그러나 "count ($ sitemenu)"변수는 결과의 수와 상관없이 항상 "1"로 설정됩니다. 따라서 아무 일도 일어나지 않습니다. PDO에서 시도 할 수없는 코드입니까?

+2

아마도 어리석은 질문입니다. $ sitemenu가 PHP 배열입니까? – Helen

+0

'어리석은'것은 아니지만 가장 현명한 질문 중 하나입니다. –

+0

하나의 테이블 만 사용되는 경우 테이블 이름을 지정할 필요가 없습니다. 코드를 좀 더 읽기 쉽게 만들었습니다. –

답변

0

하나의 필수 조작을 잊었습니다.
그냥 쿼리 실행 옆에 fetchAll() 메서드를 사용하여 실제 결과를 가져와야합니다.
그리고 원하는 배열을 얻을 수 있습니다.

사실, 질문은 제목의 문제와 관련이 없지만 오히려 기본적인 PDO 사용과 관련됩니다.

물론 디버깅이 부족합니다.
직접 질문에서 질문해야하며 문제를 $sitemenu 내용으로 끓여야합니다.

+0

물론 ... 항상 작은 것입니다! 정말 고맙습니다! – bnrup

관련 문제