【问题标题】:PHP - Reconnect to mySQL again or send previous via POST?PHP - 再次重新连接到 mySQL 或通过 POST 发送以前的?
【发布时间】:2018-01-23 13:23:39
【问题描述】:

我有两个网页:page1.php 和 page2.php。

在page1.php中

执行了一个 mySQL 查询并将其保存到变量 A 中。

在page2.php中

我想要相同查询的相同结果。

我应该重新连接到 mySQL 并再次执行查询还是通过 POST 或 SESSION 从 page1.php 发送变量 A?什么是快速解决方案?还有其他解决方案吗?

编辑:没有其他查询,所以数据不会改变(我认为)

【问题讨论】:

  • 如何确保从 page1 传递到 page2 的数据没有以任何方式被篡改?你怎么能相信数据?您可以使用 $_SESSIONS 来存储数据,但我认为再次运行查询不会出现问题
  • 将查询结果传递到第 2 页可能会更快,否则您将在几秒钟内为同一查询访问数据库两次。跨度>
  • 如果你的数据没有变化,会话比 mysql 快
  • 我当然不会通过 POST 传递它,这会导致数据被恶意客户端篡改。假设数据集不太大,SESSION 会更快一些,并且不太可能在用户会话的空间中发生变化。除非您的查询运行时间很长,否则我们可能只讨论几分之一秒的差异。了解您的查询实际上通常需要多长时间会很有用。另一个设计说明:如果您希望在多个页面上获得完全相同的结果,请考虑使用第三个脚本,您可以将其包含在其他脚本中,它只会产生该输出
  • 那么您就不会重复相同的 UI 和数据库代码两次。

标签: php mysql sql session post


【解决方案1】:

如果您不确定数据是否已更改,请进行新查询!执行此操作可能需要更多时间,但您可以确保数据仍然是最新的。 如果用户在另一个浏览器中重新启动 page1.php 而仍在处理 page2.php 怎么办? 因此,只有当您 100% 确定无法操纵任何内容或加载数据需要太多时间/资源重用数据时。

永远不要相信可能已被用户更改的数据,并始终确保仍然是您所期望的。也许您应该考虑对数据进行某种验证。

【讨论】:

    【解决方案2】:

    我当然不会通过 POST 传递它,这会导致数据被恶意客户端篡改。

    如果数据集不是太大,SESSION 会快一点,如果数据在用户会话空间中不太可能发生变化,这是一个合理的选择。

    了解您的查询实际上通常需要多长时间以了解时间差异是否显着会很有用。您确实提到了结果集包含 14000 行。如果它只是从一个表中选择,我无法想象它需要很长时间。在会话中存储 14000 行确实很多。请记住,它为在任何时候使用该站点的每个用户存储一次数据集(因为会话特定于单个用户)。如果您有很多用户,则必须密切注意服务器上消耗了多少内存。

    另一个设计说明:如果您希望在多个页面上获得完全相同的结果,请考虑使用第 3 个脚本,您可以将其包含在其他脚本中,它只会产生该输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2015-06-14
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 2017-09-20
      相关资源
      最近更新 更多