Php 多个准备好的语句,保持活动状态直到完成页面
假设有一个包含一些类的网页。一个是Mysqli,在开始时将其连接到DB并保持连接。现在的问题是: 好的解决方案是在(示例设置类)准备好的语句中从DB表“settings”调用值,并将其保持打开(语句)直到完成(在页脚处关闭语句和连接),或者在php中将“settings”DB表中的所有数据加载到array()中,然后从数组中调用它,而不是从DB绑定它 第二个问题是,若我打开了一个语句,我可以为另一个类(从DB调用文本的示例类)打开另一个语句,并像前面的示例一样执行吗?然后,当然,在完成页面关闭它Php 多个准备好的语句,保持活动状态直到完成页面,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,假设有一个包含一些类的网页。一个是Mysqli,在开始时将其连接到DB并保持连接。现在的问题是: 好的解决方案是在(示例设置类)准备好的语句中从DB表“settings”调用值,并将其保持打开(语句)直到完成(在页脚处关闭语句和连接),或者在php中将“settings”DB表中的所有数据加载到array()中,然后从数组中调用它,而不是从DB绑定它 第二个问题是,若我打开了一个语句,我可以为另一个类(从DB调用文本的示例类)打开另一个语句,并像前面的示例一样执行吗?然后,当然,在完成页面关闭它
是否存在任何性能或安全问题,您可以在那里看到 该语句在数据库连接上作为一条SQL语句执行。它不会一直返回数据库,一次只抓取一行,所以不用担心 通常,您应该将所有内容加载到某个数据结构中。如果您的查询返回的数据比您需要的多,那么您需要在查询中解决这一问题。不要运行返回大量数据的SQL,然后依靠PHP逐行检查并对其执行一些重要操作。只需编写SQL就可以获得您首先需要的东西。我意识到这并不总是可能的,但是当人们谈论优化他们的网站时,查询优化通常位于/接近列表的顶部,所以它非常重要 您肯定应该执行多个语句。在获取任何数据之前一直打开和关闭整个数据库连接是愚蠢的
(然而,也没有反对这种做法的论据——如果愿意,可以这样做,准备一条语句/多次执行)
(唯一的问题可能是获取结果。您必须始终获取\u result/store\u result,以确保没有结果悬而未决,并防止运行其他查询,无论是常规查询还是准备查询)李>
当有人给出解释否决票的实际评论时总是很好的。我花了大量时间开发数据库驱动程序,并且正在解决帖子中的问题,因此,在没有解释的情况下,我无法帮助任何人看到一个合理的答案。这个问题完全是关于使用准备好的语句。你的回答似乎也完全忽略了这一点。他问我是否应该把他准备好的声明公开,我说没有充分的理由这样做。他问是否应该从一开始就将数据加载到PHP数组中,我说这通常是个好主意,如果他认为数组太大,通常意味着要重新评估查询。他问我是否可以公开多份准备好的声明,我说可以。这是怎么离题的?也许我错了你的答案。但“打开和关闭整个数据库连接”与这个问题有什么关系?以及“它不会一直返回数据库,一次只获取一行数据”。对于准备好的语句,它看起来完全相反-它确实是返回数据库,在需要另一个设置时一次获取一行。