如何管理一页上的许多查询?

Posted

技术标签:

【中文标题】如何管理一页上的许多查询?【英文标题】:How to manage many queries on 1 page? 【发布时间】:2011-05-13 07:53:13 【问题描述】:

在一个页面上管理多个查询的最佳方式是什么。我在一页上使用了 4 个不同的查询,所有这些查询都只是按顺序使用变量 $query,所以就像页面上的每个查询都位于不同的区域一样,并且随着页面从上到下加载,每个查询都完成了。

我已将每个查询放在一个单独的文件中,并将其包含在我回显数据的区域中。这很糟糕吗?我是否应该将它们全部放在一个文件中,并为每个查询使用单独的变量,例如 $result 1、$row1 然后用于第二个查询 $result 2、$row2 等等第四个。

谢谢

【问题讨论】:

如果您觉得可以重叠任何查询,只需添加另一个“查询”变量即可。您可以添加与内存一样多的查询。 【参考方案1】:

论坛、在线购物车程序等通常每页有 10 或 20 多个查询。 4 不会直接杀了你。

【讨论】:

好的,很高兴知道,但我应该将它们留在实际页面上还是放在包含的单独页面或第三个选项中,将它们全部放在一个文件中? 我发现让它们内联没有问题。如果您发现它使您的代码看起来很混乱,您可以为您提供参数的每个查询创建一个包含多个函数的文件,并根据函数的参数返回自定义查询。【参考方案2】:

我个人认为对查询始终使用相同的变量不是一个好主意,尤其是对于应该具有有意义名称的结果,例如 $numberOfMessages、$countUsers ... 请记住,最重要的是您的代码可能需要维护它的其他人可以阅读。花点时间为变量写有意义的名字。

说到查询,我认为一页上有 4 个查询不是问题,只要确保查询只检索到您想要的数据...花一些时间优化查询,因为从 mysql 获取大量数据是性能杀手。

编辑

例如我使用:

//import the db configuration
require_once (JPATH_COMPONENT . DS . 'libs/confDbSugarcrm.php');
$db =& JFactory::getDBO();
//list your queries (i use joomla classes in this example)

$sqlUsers = "select id, name from table_users";
$db->setQuery($sqlUsers); 
$usersIdName = $db->loadObjectList();


$sqlNumberOfMessages = "select count(id) as how_many from table_messages";
$db->setQuery($sqlNumberOfMessages); 
$numberOfMessages = $db->loadResult();

等等……这样你的代码是可读的,你避免了变量名称的冲突……我认为你的生活更轻松(并且为变量使用不同且有意义的名称是最佳实践)。

【讨论】:

如果我要给他们所有有意义的变量,那么我应该将它们全部包含在 1 个文件中,然后包含在页面顶部,或者我应该将它们留在实际页面或单独的文件中? 我通常将它们内联并分组,以便清楚地知道什么 sql 与什么结果相关联...通常我将配置文件留在外面,这样您就只能将它们放在一个地方。我已经编辑了答案以显示示例 当然,如果你使用 MVC 模式(看这里是什么意思 en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller)你会在模型部分拥有所有的 sql 和查询,我的例子只是形成更简单的代码段

以上是关于如何管理一页上的许多查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何将一页上的 id 调用到另一页

当 TABLE 跨越多个页面时,如何使第一页上的 TFOOT 显示“继续...”?

如何使用 Twig 在 Stacey v3 中删除第一页和最后一页上的上一个和下一个链接?

一页上有许多社交网络的分享按钮

两个页面上相同的锚点 ID:如何从一个页面链接到另一页上的锚点

在 Telerik 报表的最后一页上的报表页脚之前显示页脚