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


PHP + MySQL multi DB website to single DB website with prefixes.

我有一个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语句的表名前缀与变量?

您可以查询表名并将其放入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文档,用于"RENAME…"查询