首页 > 代码库 > dedecms(织梦)表前缀的bug
dedecms(织梦)表前缀的bug
表前缀的做法很科学,当一个数据库中的存在多个项目时,而项目之间必定会存在相同命名的表,这时候给项目加上表前缀是很有必要的,所以我们应该习惯给项目里的表加表前缀。
通常我们设置表前缀是把表前缀做成一个配置。在程序中我们会把该表前缀加到sql语句的表名前。但是在程序中的具体操作有很多方式。
目前我看到了2种关于把表前缀加到sql语句中的做法:
1.dedecms
在写sql语句的时候不考虑表前缀的问题,在所有表的前面都加上同样的字符串(#@__),然后在sql语句执行前把sql用字符串匹配,将之前的字符串(#@__)替换成之前配置的表前缀。
2.ecshop
在公共函数库里面加一个函数,通过传入表名返回带有表前缀的表名,在sql语句中有表名的地方都调用该函数。
ecshop的做法很值得采取,而dedecms则不提倡使用,因为这种做法是有bug的。当sql语句中存在‘#@__’的地方都会被替换成表前缀,比喻我在dedecms系统中添加或者编辑我的这篇博客,那么发布之后你看到的内容就和我的原文就不一样的了(你能看出来哪里不一样吗?),还有在我们进行文章、产品搜索的时候,如果你输入的是‘#@__’的话,那么系统返回的搜索结果是搜索表前缀的结果。
本文出自 “程序猿的那些年” 博客,请务必保留此出处http://uyuyuuy.blog.51cto.com/6190986/1560855
dedecms(织梦)表前缀的bug
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。