Maison  >  Article  >  développement back-end  >  数据表名所变(有规律的多了一个相同的前缀),系统一定要修改sql语句吗?

数据表名所变(有规律的多了一个相同的前缀),系统一定要修改sql语句吗?

WBOY
WBOYoriginal
2016-06-23 14:11:37885parcourir

原系统的sql形如:
select * from 'table';
今天上线后,才知道:
由于其他原因(这里就不提了)。
所有的数据表一定要改名子,要统一把所有的数据表,加上前缀,就是加上一个"nbx_table"

我应该怎么办?
第一,把系统再改一遍吗?也太麻烦了吧?
第二,怎么可以防止下次不这样?

第三,一些cms这样写有什么好处:

$this->FLInfos = $this->dsql->GetOne("SELECT * FROM `#@__freelist` WHERE aid='$fid' ");


回复讨论(解决方案)

一些开源项目(CMS、BLOG、Wiki、框架...)给数据表加上前缀的原因是:
防止与其他应用系统发生冲突!
租用的空间都不能自行创建数据库,当在空间中放入两个及以上项目时,表名是极易发生冲突的。

第一,把系统再改一遍吗?也太麻烦了吧?
这个取决于你是怎么去访问数据库的,例如Hibernate和MyBatis不需要修改源代码,直接去修改映射文件就可以。
如果你是用JDBC在源码里写死了SQL语句,这个没办法,只能坑次坑次的去修改源码里的SQL语句了。

第二,怎么可以防止下次不这样?
尽量使用MyBatis与Hibernate等数据库持久层框架。

第三,一些cms这样写有什么好处:"SELECT * FROM `#@__freelist` WHERE aid='$fid' "
仔细看这个SQL,里面#@__freelist等前面有一个标志,这个其实就是最后生成SQL语句时要被替换成配置文件里指定的变量,正好可以解决你的这种问题。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:CMS开发的问题Article suivant:求大神帮助,关于正则表达式的