【发布时间】:2015-02-17 11:33:55
【问题描述】:
所以,我是 php 开发的新手,我想用 php pdo 和 sql server 创建一个分页, 第一页效果很好,但分页中的其他页面不起作用 (对不起我的英语,我来自巴西)
遵循我的代码
<?php
require 'conn.php';
$pdo = dbConnect();
$limite = 10;
$pg = (isset($_GET['pg'])) ? (int)$_GET['pg'] : 1;
$inicio = ($pg * $limite) - $limite;
$sql = "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY ID_USUARIO) as row FROM tbl_usuario) a WHERE row between ".$inicio." and ".$limite."";
try {
$query = $pdo->prepare($sql);
$query->execute();
} catch (PDOexception $error_sql){
echo 'Erro ao retornar os Dados.'.$error_sql->getMessage();
}
while($linha = $query->fetch(PDO::FETCH_ASSOC)){ ?>
<?php
echo $linha['NOME'].'</br>';
?>
<?php }
$sql_Total = 'SELECT ID_USUARIO FROM tbl_usuario';
try {
$query_Total = $pdo->prepare($sql_Total);
$query_Total->execute();
$query_result = $query_Total->fetchAll(PDO::FETCH_ASSOC);
$query_count = $query_Total->rowCount(PDO::FETCH_ASSOC);
$qtdPag = ceil($query_count/$limite);
} catch (PDOexception $error_Total){
echo 'Erro ao retornar os Dados. '.$error_Total->getMessage();
}
echo "<div class='relax h30'></div>";
echo '<a href="teste?pg=1">PRIMEIRA PÁGINA</a> ';
echo '<ul id="paginacao">';
echo '<li><a class="anterior" href="teste?pg=1">Anterior</a></li>';
if($qtdPag > 1 && $pg <= $qtdPag){
for($i = 1; $i <= $qtdPag; $i++){
if($i == $pg){
echo "<li><a class='ativo'>".$i."</a></li>";
} else {
echo "<li><a href='teste?pg=$i'>".$i."</a></li>";
}
}
}
echo "<li><a class='proxima' href='teste?pg=$qtdPag'>Próxima</a></li>";
?>
【问题讨论】:
-
所以我们应该自己猜怎么着
not work?或者你有一些例子? -
这里看不到任何 SQL 注入,但是由于您使用的是 PDO,因此使用参数绑定将是一个非常好的主意,而且非常容易。
-
@u_mulder 我喜欢知道如何进行分页
-
将问题分解为更小的问题。对于第 1、2、3 页等,
$inicio的值是多少?然后计算出你会得到什么查询,并直接在你的数据库控制台中运行它。结果如您所愿吗? -
右边有很多问题
----->涉及“分页... SQL Server”。我希望你会发现这些有用吗? This one in particular.
标签: php sql sql-server pdo pagination