PHP + MySQL多DB网站到单个DB网站的前缀。

时间:2011-12-15 16:50:01

标签: php mysql sql regex database

我有一个PHP网站,它使用多个MySQL表,并使用mysql_select_db函数在它们之间切换。

    DB1 (table1, table2, table3)
    DB2 (table1, table2)

不幸的是,最终托管只支持一个数据库。所以我想到了一个用自定义mysql_switch_prefix函数替换mysql_select_db函数的系统,该函数存储一个字符串,该字符串将用作后续查询中所有表名的前缀。

    DB (DB1_table1, DB1_table2, DB1_table3, DB2_table1, DB2_table2)

接下来,我将使用一个自定义的mysql_query函数,该函数用前缀为'db_prefix'变量的表名替换所有表名。

    SELECT * FROM `table1` -> SELECT * FROM `DB1_table1`

是否有方法(或正则表达式)用前缀为变量的表名替换SQL语句中的所有表名?

1 个答案:

答案 0 :(得分:1)

您可以查询表名并将它们放入PHP数组中。

$result = mysql_query("SHOW TABLES FROM [DB name]")
while($tableNames = mysql_fetch_row($result)){...}

然后创建一个循环,并执行以下操作:

mysql_query("RENAME TABLE" . $tableNames[$i] . "TO [prefix]" . tableNames[$i]);

这里是MySQL documentation,对于" RENAME ......"查询。