我在社区偶然发现了我的问题,但我找不到解决方案 - 也许是具体的。我在PHP中执行的以下函数/操作序列:
如果我不创建object_2,一切正常。我做错了什么?
答案 0 :(得分:0)
这是按预期工作的。 From the MySQL documentation:
“临时表
创建表时可以使用TEMPORARY关键字。 TEMPORARY表仅对当前连接可见,并在关闭连接时自动删除。这意味着两个不同的连接可以使用相同的临时表名,而不会相互冲突或与现有的同名非TEMPORARY表冲突。 (在删除临时表之前,现有表是隐藏的。)“
为避免发生这种情况,请不要明确关闭连接。来自mysql_close()
的PHP文档:
“通常不需要使用
mysql_close()
,因为在脚本执行结束时会自动关闭非持久性开放链接。另请参阅freeing resources。”
相反,您应该将mysql_connect()
返回的连接资源存储在本地变量中,以便PHP的垃圾收集器可以在对它的所有引用都超出范围时自动关闭连接。
答案 1 :(得分:0)
如何解决您的问题:在class_1
中添加链接标识符,否则mysql库将采用最后一个(您关闭)。
答案 2 :(得分:0)
感谢大家寻求解决方案的帮助。链接标识符解决方案对我来说有点不好。在php.net是我的问题的详细描述和一些提示如何解决:
以下是共享链接的工作原理: - 每个链接都是一种资源。 mysql_connect()默认查找具有相同参数的资源。如果存在,它将返回 现有资源。 - 将该资源分配给变量会增加资源的引用计数。 - 当引用递减为零时,将关闭基础TCP /套接字连接。 - 每个远离该资源的变量赋值都会减少引用计数。 (这包括功能级别 变量超出范围) - mysql_close()也会减少引用计数。
注意最后两点:mysql_close()和重新分配一个 变量减少链接的引用计数。