将数据库查询结果存储在PHP对象中

时间:2011-05-31 19:45:32

标签: php

我正在开发一个使用标准LAMP堆栈构建的项目。目前,我只是将查询结果输出到页面上 - 结果根本没有存储在对象中。

将来,我想编辑查询的结果。我想如果结果存储在PHP对象中会更容易。

将对象本身存储在数据库中(通过序列化/反序列化),或者在需要时(在执行查询之后)创建对象,然后在不再需要它们时销毁它们会更有益吗?

4 个答案:

答案 0 :(得分:1)

最好直接在对象中存储结果的副本,而不是序列化的结果句柄。序列化结果句柄不会保留锁,服务器端变量,表状态,事务或结果集中的数据。 MySQL没有以这种方式存储连接句柄的规定,因此它被视为常规断开连接,导致清理未完成的查询,破坏变量,回滚(或提交)事务等等......

同样,在你执行fetch_row()类型调用之前,查询检索的数据实际上并不是通过连接获取的,所以你甚至没有在序列化句柄中使用它。

答案 1 :(得分:0)

始终在php中创建对象,并在以后销毁它们。为了序列化,您需要使用longtext或like字段,这些字段已知很慢并且您无法为它们编制索引。如果您总是选择“全部”,那么请继续,但如果您使用条件或高级查询,则应将所有数据分开。

答案 2 :(得分:0)

这取决于很多因素。如果您反复运行完全相同的查询,则是,将结果存储在数据库中。但为什么要将它们序列化?如果您尝试Object-relational mapping,则可以更容易维护查询对象,您可以将其存储在组织良好的关系数据库中。 如果您不经常运行相同的查询,我建议您以其他方式缓存输出。

答案 3 :(得分:0)

  

将对象本身存储在数据库中(通过序列化/反序列化),或者在需要时(在执行查询之后)创建对象,然后在不再需要它们时销毁它们会更有益吗?

没有。有人在某处为你做过这件事。对您来说,使用现有的ORM会有什么好处。无论哪一个,只需选择一个并使用它。你将成为未来的光年,并在很短的时间内完成你的项目。

你应该使用PHP framework,其中许多都与ORM结合。