Php 多个准备好的语句,保持活动状态直到完成页面

Php 多个准备好的语句,保持活动状态直到完成页面,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,假设有一个包含一些类的网页。一个是Mysqli,在开始时将其连接到DB并保持连接。现在的问题是: 好的解决方案是在(示例设置类)准备好的语句中从DB表“settings”调用值,并将其保持打开(语句)直到完成(在页脚处关闭语句和连接),或者在php中将“settings”DB表中的所有数据加载到array()中,然后从数组中调用它,而不是从DB绑定它 第二个问题是,若我打开了一个语句,我可以为另一个类(从DB调用文本的示例类)打开另一个语句,并像前面的示例一样执行吗?然后,当然,在完成页面关闭它

假设有一个包含一些类的网页。一个是Mysqli,在开始时将其连接到DB并保持连接。现在的问题是:

好的解决方案是在(示例设置类)准备好的语句中从DB表“settings”调用值,并将其保持打开(语句)直到完成(在页脚处关闭语句和连接),或者在php中将“settings”DB表中的所有数据加载到array()中,然后从数组中调用它,而不是从DB绑定它

第二个问题是,若我打开了一个语句,我可以为另一个类(从DB调用文本的示例类)打开另一个语句,并像前面的示例一样执行吗?然后,当然,在完成页面关闭它


是否存在任何性能或安全问题,您可以在那里看到

该语句在数据库连接上作为一条SQL语句执行。它不会一直返回数据库,一次只抓取一行,所以不用担心

通常,您应该将所有内容加载到某个数据结构中。如果您的查询返回的数据比您需要的多,那么您需要在查询中解决这一问题。不要运行返回大量数据的SQL,然后依靠PHP逐行检查并对其执行一些重要操作。只需编写SQL就可以获得您首先需要的东西。我意识到这并不总是可能的,但是当人们谈论优化他们的网站时,查询优化通常位于/接近列表的顶部,所以它非常重要

您肯定应该执行多个语句。在获取任何数据之前一直打开和关闭整个数据库连接是愚蠢的

  • 据我所知,没有人这样做。主要是因为多重执行的真正好处并不像一些人想象的那么大,也不值得费心。对于少量运行的短主键查找(最多几十个),您几乎无法区分它们之间的区别。
    (然而,也没有反对这种做法的论据——如果愿意,可以这样做,准备一条语句/多次执行)

  • 然而,获取不超过数百条记录的单个查询仍然比单独的查询(甚至是准备好的)获取相同数量的数据要快。所以,只要您的设置保持在适当的数量,最好一次全部设置

  • 是的,当然您可以根据需要准备尽可能多的陈述。
    (唯一的问题可能是获取结果。您必须始终获取\u result/store\u result,以确保没有结果悬而未决,并防止运行其他查询,无论是常规查询还是准备查询)
    当有人给出解释否决票的实际评论时总是很好的。我花了大量时间开发数据库驱动程序,并且正在解决帖子中的问题,因此,在没有解释的情况下,我无法帮助任何人看到一个合理的答案。这个问题完全是关于使用准备好的语句。你的回答似乎也完全忽略了这一点。他问我是否应该把他准备好的声明公开,我说没有充分的理由这样做。他问是否应该从一开始就将数据加载到PHP数组中,我说这通常是个好主意,如果他认为数组太大,通常意味着要重新评估查询。他问我是否可以公开多份准备好的声明,我说可以。这是怎么离题的?也许我错了你的答案。但“打开和关闭整个数据库连接”与这个问题有什么关系?以及“它不会一直返回数据库,一次只获取一行数据”。对于准备好的语句,它看起来完全相反-它确实是返回数据库,在需要另一个设置时一次获取一行。