【发布时间】:2014-12-19 23:53:35
【问题描述】:
我正在尝试使用我设置的变量来限制结果的数量,即使我设置了限制,它仍会返回所有结果。
// 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; ?>
如您所见,我回显了返回 0、3 的 $limit 和 $start。
应该从 0 开始将结果限制为 3。
【问题讨论】:
-
IIRC,您不能将绑定变量用于 LIMIT 参数
-
bindValue()调用返回什么?如果我是一个赌徒,我会说false...如果你从不检查错误,那么这样的事情会发生很多。 -
绑定值是一个 int 所以它应该在一个限制参数中工作
-
$adverts来自哪里?