php - 如何使用 order by 为表建立索引?

标签 php mysql mysqli

使用 while 循环,我可以按照我想要的顺序返回我的表,但是在实现分页之后,我创建的变量(计数器)在每个页面上重置自身,令人沮丧。示例代码:

$sql = ('SELECT id,name,logo FROM mytable ORDER BY name DESC LIMIT 25');
$query = mysqli_query($db_conx,$sql);
$counter = 0;

while ($row = $query->fetch_assoc()) {
    $counter++;
    echo "$counter, $row['id'], $row['name']";
    echo "<br />";
}

我已经尝试了很多方法,但无法使其发挥作用。显然我的逻辑是有问题的。循环返回正确的结果,但 $counter 变量在每个页面上中断,无限期地重置自身。

我想做的是让分页循环创建的每个页面的 $counter 增加 25(表示每个页面的结果)。示例代码:

for ($i=1; $i<=$total_pages; $i++) {
    echo "<a href='page.php?page=".$i."'>&nbsp[".$i."]</a> ";
    $GLOBALS["counter"]+=25;            
};

显然这不起作用,所以我对下一步应该尝试什么感到困惑。如果有人有任何想法,我很乐意听到他们,我听说过有关 SO 社区的伟大事情。

最佳答案

您似乎在任何时候都只显示前 25 个结果。

如果是第一页,则需要将 $counter 初始化为零,如果是第二页,则需要初始化为 26,依此类推:

$counter = 0;
if(isset($_GET['counter'])){
    $counter = intval($_GET['counter']);
}

您需要修改查询以获取每个页面的一组不同结果:

$sql = 'SELECT id,name,logo FROM mytable ORDER BY name DESC LIMIT ' . mysqli_real_escape_string($db_conx, $counter . ',25');
$query = mysqli_query($db_conx,$sql);

然后我假设您显示到其他分页页面的链接,您需要向其传递 $counter 的值:

<a href="results.php?counter=<?php echo $counter;?>">Next</a>

关于php - 如何使用 order by 为表建立索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38844337/

相关文章:

php - MYSQLI new query within a while fetch

php - 在一个查询中选择更新

php - 如何将包含引号的字符串插入数据库?

MYSQL - 计算当月开始日期和结束日期之间的天数

php - 在 Mysql 或缓存中存储数据与在 PHP 中计算

python - 使用 Django ORM 添加列

php - 使用 PHP Simple HTML DOM Parser 卡住选择类或 id

PHP代码没有被执行,但是代码显示在浏览器源代码中

PHP echo 显示空白屏幕的变量

php - MySQL-更改一行的时间值以匹配同一表的另一行的时间值