gpt4 book ai didi

mysql - 分页结果 : Handling invalid passed data

转载 作者:行者123 更新时间:2023-11-30 23:37:31 24 4
gpt4 key购买 nike

有一个从 MySQL 中提取结果并将其显示在表格中的简单页面。我在结果上启用了分页,并允许用户设置每页显示的结果数。我传递了两个查询字符串值来处理这个问题:“page”和“count”。

然后我使用这些值来计算我的 MySQL 查询的 LIMIT,使用 SQL_CALC_FOUND_ROWS 指令,然后调用 SELECT FOUND_ROWS(); 来获取结果总数。这一切都很好。

现在,我想验证查询字符串值。当我将“count”的结果/页面值的可能“正确”值存储在一个数组中时,我只是检查传递的“count”值是否在该数组中,如果没有,则将其设置为默认值。对于“页面”值,我有点精神障碍......为了确定传递的“页面”是否有任何结果,这意味着它是“正确的”,我需要去数据库并首先找到结果计数,但由于我只想访问数据库一次,因此我需要包含 LIMIT,它基于传递的“页面”值……先有鸡还是先有蛋。关于如何解决这个问题,我有几个想法:

  1. 按上面的代码运行查询,如果 (('page' - 1) * 'count') 结果大于从 SELECT FOUND_ROWS(); 返回的值,重新运行查询,并将新的 LIMIT 设置为 0,计数。

  2. 获取完整的结果集,验证传递的页面是否正确,然后使用 LIMIT 值从数据库中再次拉取。

我根本不想回到数据库,但正如我提到的,在这个相当普遍的问题上有一个心理障碍。

谢谢,

保罗

最佳答案

我最终使用了上面的第一个解决方案 -

  1. 按上面的代码运行查询,如果 (('page' - 1) * 'count') 结果大于从 SELECT FOUND_ROWS(); 返回的值,重新运行查询并将新的 LIMIT 设置为0,计数。

它并不完美,因为在传递的页面值错误的情况下需要第二次数据库拉取,但考虑到这是一种意外情况,仅由用户故意传递错误数据而触发,这是可以接受的。如果其他人有更好的解决方案,我很乐意重新提出问题。

关于mysql - 分页结果 : Handling invalid passed data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com