【问题标题】:Query Losing Vital Information During Pagination in PHP在 PHP 中查询分页期间丢失的重要信息
【发布时间】:2026-02-12 02:05:01
【问题描述】:

我刚刚为我的网页创建了一个分页,它从我的 mysql 数据库中获取数据。我的查询有一个 WHERE 子句,它接受一个 php 变量以及何时将其用作关键字。摘录如下:

SELECT name, category_id, subcategory, image, price, stock FROM home_products WHERE name LIKE '%$search%'
    UNION
    SELECT name, category_id, subcategory, image, price, stock FROM kitchen_products WHERE name LIKE '%$search%'

页面上的链接(例如第 1 页、第 2 页等)显示在页面上,但每当我点击它们时,页面都会显示一个错误,即找不到 $search 变量(where 子句中的关键字) .我尝试在分页链接的末尾添加“搜索”变量,但它并没有真正做任何帮助(分页结果中的页数列表增加,这只会给我带来更多问题)。以下是输出分页的代码摘录:

echo "<a href='pagination.php?page=1'>".'|<'."</a> "; // Goto 1st page

for ($i=1; $i<=$total_pages; $i++) { 
    echo "<a href='results.php?search='".$_GET['search']."'&page=".$i."'>".$i."</a> "; 
};

echo "<a href='results.php?page=$total_pages'>".'>|'."</a> "; // Goto last page `

我做错了吗?提前谢谢你

【问题讨论】:

    标签: php html mysql pagination


    【解决方案1】:

    您可以在此处查看的内容:

    • 您的第一个页面链接转到 pagination.php,尽管其他页面链接转到 results.php。看起来不应该是这样的
    • 您的第一页和最后一页没有像循环中的页面那样附加搜索变量
    • 如果您从循环生成的任何页面都说找不到“搜索”,那么您可能正在混合提交方法(例如,您期望 $_POST['search'],但传递了“搜索” $_GET 中的参数)

    【讨论】: