我正在创建一个具有安装程序的新CMS。
我允许表名以自定义字符串为前缀。
使用带前缀的表名修改 sql 的推荐方法是什么?
我是否必须将DB_PREFIX添加到每个查询中,或者之后是否有任何方法可以通过修改 sql 在我的数据库类中完成?
谢谢
一种技术是用大括号括起来的表编写所有 SQL 查询,并使用函数将这些大括号替换为所需的数据库前缀。
与其编写标准的 SQL 查询,不如使用大括号等大括号来拥抱表名,例如:
//SQL query in your code
$query=prefixQuery("SELECT name FROM {customers} WHERE id=$id");
并定义简单的函数,将左{替换为前缀,并删除右}:
define(DB_PREFIX,'myprefix_');
function prefixQuery($query)
{
return str_replace('}','',str_replace('{',DB_PREFIX,$query));
}
您可以为每个查询添加前缀,是的。
您还可以使用函数解析每个查询,str_replace如下所示:
str_replace('mytable', 'prefix_mytable', $Query);
我会选择选项 1,更少的负载。
提示:如果创建新的 CMS,请提供数据库类并自动添加前缀。