2012-11-25 3 views
1

이 코드는 첫 페이지에서 잘 작동하지만 LIMIT는 FetchAll()에 영향을 미치지 않는 것으로 보입니다. 그럼 내 질문은 : fetchAll()에는 행 수를 제한하는 선택적 인수가 있습니까? 또는이 문제를 해결하기위한 더 좋은 방법을 제안하십시오.PHP 페이지 매기기 fetchAll() 및 LIMIT

<html> 
<body> 
<?php 
require_once('connection.php'); 
$rowsCount = $connection->query('SELECT COUNT(*) FROM test')->fetchColumn(); 
$page = 1; 
$perPage = 10; 
if (isset($_GET["page"]) and $_GET["page"] >= 1 and $_GET["page"] <= 10) { 
    $page = (int) $_GET["page"]; 
    } 
$beginning = ($page-1) * $perPage; 
$end = $page * $perPage; 
$sql = "SELECT * FROM test LIMIT $beginning, $end"; 

?> 
<table border = '2'> 
<tr> 
    <th width="30%">ID</th> 
    <th width="70%">TEXT</th> 
</tr> 
<?php 
// echo '<pre>'; 
// print_r($connection->query($sql)->fetch()); 
// echo $sql; 
// echo '<pre>'; 
foreach ($connection->query($sql) as $value) { 
    echo '<tr height ="50px"><td>' . $value['id'] . '</td><td>' . $value['text'] . '</td></tr>'; 
} 
?> 
</table> 
    <p> 
    <?php if($page > 1){ ?> 
     <a href="pagination.php?page=<?php echo $page-1;?>" >Previous</a> 
    <?php } ?> 
     <a href="pagination.php?page=<?php if($page < ceil($rowsCount/$perPage)){ echo $page+1;} else {echo 1;}?>" >Next</a> 
    </p> 
    </body> 
</html> 

답변

0

구문은 LIMIT beginning, end 아니라 LIMIT beginning, maxrows 없습니다.

$end = $page * $perPage; 

과 :

0

이 라인을 수정

$end = $perPage; 

을 또는 당신의 SQL 문자열을 변경

$sql = "SELECT * FROM test LIMIT $beginning, $perPage";