我有一个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语句中的所有表名?
答案 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 ......"查询。