【问题标题】:Multiple conditions within pagination with SQL interjection PHP使用 SQL 插入 PHP 进行分页中的多个条件
【发布时间】:2020-01-29 02:55:00
【问题描述】:

在 PHP 中,我正在尝试实现分页,以显示来自基于 LIMIT 的 SQL 数据库的不同结果。我知道如何使用多个参数编写分页,但我不确定如何编写应用程序来识别 SQL 插入的第二个条件。

如果您查看包含foreachhref containing page_number and category_id 的代码,我需要在底部获取分页以遵守foreach 中选择的类别以显示正确的数据。我也不知道如何在for loop 中不进行硬编码来实现页面

这是SQL查询页面的功能

function get_products_by_category($category_id, $pn) 
{
    global $db;

    $arithmetic = 8*($pn -1);
    $query = "SELECT * FROM products 
              WHERE products.categoryID = :category_id
              ORDER BY productID LIMIT $arithmetic, 8";
    $statement = $db->prepare($query);
    $statement->bindValue(":category_id", $category_id);
    $statement->execute();
    $products = $statement->fetchAll();
    $statement->closeCursor();
    return $products;
}

这里是调用它的地方

if ($action == 'list_products') 
{
    $category_id = filter_input(INPUT_GET, 'category_id', 
            FILTER_VALIDATE_INT);
    if ($category_id == NULL || $category_id == FALSE) 
    {
            $category_id = 1;

    }

    $category_name = get_category_name($category_id);
    $categories = get_categories();
    $products = get_products_by_category($category_id, $pn);
    $products_amount = get_products_total($category_id);
    $total = count($products_amount);
    include('product_list.php');       

}

这是foreach和分页

<?php 
    $pn;
    $current_category;
    $total_page = $total/8; 
    $remain = $total % 8;
    if($remain > 0)
    {
        $total_page = $total_page + 1;
    }
    ?>

    <aside>
        <!-- display a list of categories -->
        <h2>Categories</h2>
        <nav>
        <ul>    
        <?php foreach ($categories as $category) : ?>
            <li>

                <a href="?category_id=<?php echo $category['categoryID']; ?>">
                <?php echo $category['categoryName'];?>
                </a>
            </li>
        <?php endforeach; ?>

for($i = 1; $i <= $total_page; $i++)
        {
        ?>
            <a href="?page_number= <?php echo $i; ?> & ?category_id= <?php echo $i; ?>"><?php echo $i; ?> </a> &nbsp;
        <?php
            if($i == 1)
            {
                $pn = 1;  
            }
            else if($i == 2)
            {
                $pn = 2;
            }
            else if($i == 3)
            {
                $pn = 3;
            }
        }
        ?>

【问题讨论】:

    标签: php sql pagination xampp href


    【解决方案1】:

    试试这个:

            <a href="?page_number=<?php echo $i; ?>&amp;category_id=<?php echo $category_id; ?>"><?php echo $i; ?> </a> &nbsp;
    

    【讨论】:

    • 是的,对不起,我打算编辑它。我也尝试过,但是每当您单击任何类别中的第 2 页时,它都会自动返回到 category_id == 1。
    • 请使用我之前帖子中的代码重试(我已经编辑过)
    • 这行得通,但你能解释一下它为什么行得通吗,&amp 方法中是否有一个特殊属性可以识别常规 & 不会识别的变量?
    • 不,&不是问题(它是 html 实体,您可以在 wikipedia en.wikipedia.org/wiki/Character_encodings_in_HTML 上阅读更多内容)。问题是在您的原始代码中您没有在链接中使用正确的变量($i 而不是 $category_id)和空格 :)
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多