2012-11-27 3 views
-2

오히려 도움이되지 않는 제목으로 죄송합니다. foreach 문에 대해 여러 페이지를 만들려고합니다. 100 개의 행이있는 데이터베이스에 도달하기 때문에. 첫 번째 페이지에 대해 1,30 쿼리를 제한하고 두 번째 페이지에 대해 31-60 쿼리를 제한할까요? 그렇다면 어떻게 코딩합니까?PHP - Foreach가 넘칠 때 페이지를 만드는 방법?

+0

질문이 명확하지 않음 – dynamic

답변

1
$totalRows = 100;// Total rows 
$perPage = 30; 
$pages = ceil($totalRows/$perPage); 
for ($i = 0; $i<=$pages; $i++) 
{ 
    $sql = sprintf("SELECT * FROM table LIMIT %s, %s", $i*$perPage, $perPage); 
    // Execute 
} 
0

쿼리에는 상당한 오버 헤드가있을 수 있으므로 여러 쿼리를 수행하지 마십시오. 오히려 단일 쿼리를 수행 한 다음 PHP를 사용하여 결과를 원하는대로 나눕니다. 루프 카운터를 % 연산자와 함께 사용하여 휴식 시간을 확인할 수 있습니다. 예를 들어

, 당신은 결과와 루프 변수를 통해 반복하는 경우 것은 당신이 할 수있는, $ I입니다 :

if ($i > 0 && $i % 30 == 0) { 
    // Breaking action here ... 
} 

는 루프의 모든 30 일 반복을 감지하고 로직을 구현하기 위해.

+1

'쿼리가 많은 오버 헤드를 가져올 수 있으므로 여러 쿼리를 수행하지 마십시오. '하나의 쿼리가 2보다 낫다는 데 동의하지만 메모리에 대해서는 잊지 마십시오. 레코드가 크고 그 중 많은 수가 (테이블 크기와 선택하려는 양에 따라 다름) 메모리가 부족하면 쿼리가 많이 느려질 수 있습니다. 예. 50,000,000 테이블에서 10 개의 행을 선택하는 것이 빠르지 만 1000을 선택하는 것은 매우 느릴 수 있습니다. –

+0

True. OP는 성능을 점검해야합니다. 여러 쿼리에 대한 경험으로 인해 성능이 크게 저하되어 성능이 저하되기보다는 메모리를 사용하여 위험을 감수해야했습니다. 필자의 경험에 따르면 추가 쿼리를 추가하면 성능을 사용할 수없는 영역으로 끌어 올 수 있습니다. – RonaldBarzell

관련 문제