2014-12-19 22 views
2

我试图限制使用变量的结果数量,我设置了它们,并且它仍然返回所有结果,即使我设置了限制。SQL限制返回所有结果

// Results Per page 
$limit = 3; 

// Page Number 
$p=$_GET['p']=="" ? 1:$_GET['p']; 
$start=($p-1)*$limit; 

// Query 
$sql=$conn->prepare("SELECT * FROM adverts WHERE status = 2 ORDER BY ref LIMIT :start, :limit"); 
$sql->bindValue(':limit', $limit, PDO::PARAM_INT); 
$sql->bindValue(':start', $start, PDO::PARAM_INT); 
$sql->execute(); 
$data=$sql->fetch(); 
?> 

<section id="advert-listings"> 
    <div class="container page-wrapper"> 
     <div class="col-md-8 advert-listing"> 
      <?php 
       print_r ($sql); 
       echo $start; 
       echo $limit; 
      ?> 
      <?php if ($sql->rowCount()!=0) : ?> 
       <?php foreach ($adverts as $advert) : ?> 
       <div class="caption"> 
        <ul> 
         <li><i class="fa fa-moon-o"></i> Sleeps: <?= $advert['news']; ?></li> 
         <li><i class="fa fa-paw"></i> Pets: <?= $advert['header']; ?></li> 
         <li><i class="fa fa-key"></i> Ref: <?= $advert['ref']; ?></li> 
        </ul> 
       </div> 
       <?php endforeach; ?> 
      <?php endif; ?> 

正如你可以看到我附和$limit & $start其返回0,3

应当结果限制为3 0开始

+1

IIRC,你不能使用绑定瓦尔的LIMIT参数 –

+1

什么的'bindValue()'调用返回?如果我是一个博彩人,我会说'假'...如果你从不检查错误,那么这样的事情会发生很多。 –

+0

绑定值是一个int,因此它应该在极限参数中工作 – Sam

回答

3

继承人,你需要做什么;

你必须限制和周围偏移错误的方式,将其更改为限:限OFFSET:偏置

接下来你需要投你的整数,添加此;

$sql->bindValue(':limit', (int)$limit, PDO::PARAM_INT); 
$sql->bindValue(':start', (int)$start, PDO::PARAM_INT); 

接下来,改变这个;

$data=$sql->fetch() 

要:

$adverts=$sql->fetchAll()