首页 > 后端开发 > php教程 > 数据表名所变(有规律的多了一个相同的前缀),系统一定要修改sql语句吗?

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

WBOY
发布: 2016-06-23 14:11:37
原创
918 人浏览过

原系统的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语句时要被替换成配置文件里指定的变量,正好可以解决你的这种问题。

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板