0

我正在创建一个具有安装程序的新 CMS。

我允许表名以自定义字符串为前缀。

用前缀表名修改 sql 的推荐方法是什么?

我是否必须将 DB_PREFIX 添加到每个查询中,或者以后有什么方法可以通过修改 sql 在我的数据库类中完成?

谢谢

4

2 回答 2

2

一种技术是使用用大括号括起来的表编写所有 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));
}
于 2012-09-17T14:55:23.827 回答
1

您可以为每个查询添加前缀,是的。

您还可以使用 str_replace 函数解析每个查询,如下所示:

str_replace('mytable', 'prefix_mytable', $Query);

我会选择 1 号选项,减少负载。

提示:如果您创建一个新的 CMS,请提供一个 DB 类并自动添加前缀。

于 2012-06-26T18:31:07.057 回答