Php SQL limit返回所有结果

Php SQL limit返回所有结果,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我试图使用变量限制结果的数量,我设置了变量,它仍然返回所有结果,即使我设置了一个限制 // 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, :li

我试图使用变量限制结果的数量,我设置了变量,它仍然返回所有结果,即使我设置了一个限制

// 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=3;
//页码
$p=$\u获取['p']==“”?1:$_GET['p'];
$start=($p-1)*$limit;
//质疑
$sql=$conn->prepare(“从状态为2的广告中选择*,按参考顺序限制:开始,:限制”);
$sql->bindValue(':limit',$limit,PDO::PARAM_INT);
$sql->bindValue(':start',$start,PDO::PARAM_INT);
$sql->execute();
$data=$sql->fetch();
?>
  • 睡觉:
  • 宠物:
  • 参考:
如您所见,我回显
$limit
$start
返回0,3


它应该将结果限制为3,从0开始。

以下是您需要做的

如果限制和偏移方向错误,请将其更改为限制:限制偏移:偏移

下一步,您需要转换Int,添加这个

$sql->bindValue(':limit', (int)$limit, PDO::PARAM_INT);
$sql->bindValue(':start', (int)$start, PDO::PARAM_INT);
下一步,改变这个

$data=$sql->fetch()
致:


IIRC,不能将绑定变量用于限制参数
bindValue()
调用返回什么?如果我是个赌徒,我会说
false
。。。如果你从不检查错误,那么像这样的事情会经常发生。绑定值是一个int,所以它应该在限制参数中工作,
$adverts
来自哪里?
$adverts=$sql->fetchAll()