Code Igniter中并不总是提供临时表?

时间:2012-10-01 16:16:16

标签: php mysql codeigniter e-commerce temp-tables

Code Igniter - PHP - Mysql。 我正在购物网站上工作,由于每个产品的大量产品和客户定价选项(包括每个用户的不同折扣等),在客户登录时创建了一个临时表。 该表正在成功创建,但是当我浏览该站点时,它并不总是保持持久。

例如,如果我在网站的每个页面上运行了一个查询“Select * From Temp_Products”,它会返回一个空集或者说某些页面上不存在Temp_Products。

我无法弄清楚问题出在哪里,似乎没有特定的模式或触发器造成这种情况。

此外,电子商务网站如何实施目录& inventry?任何信息都会有所帮助!!

谢谢!

2 个答案:

答案 0 :(得分:0)

在db中创建一个表格 es:id - id_user - id_table
之后,在会话中输入允许您回溯表格项目的字段 创建一个允许您与db es:Mytable中的数据对话的库,并在此库中创建一些函数,从会话中的字段开始自动获取数据库中的项目。

答案 1 :(得分:0)

如果使用临时表,则存在一些缺陷。

首先,如果您使用持久连接(您从未应该这样做),则临时表将在Ci会话之间共享,因为在CI会话之间共享持久连接。这可能不是你想要的。

如果您不使用持久连接(如您所愿),则临时表仅适用于当前请求。由于CI实例在每个请求结束时停止,它会清除其数据库连接,从而丢弃该连接的所有临时表。

在您的情况下,您可能需要使用session-id作为键的“普通”表。会话终止后,不要忘记清理会话特定条目。这并不容易,因为codeigniter为此使用了一些延迟的垃圾收集机制。所以你可能需要一个cronjob定期检查会话是否存在,并采取行动。