php / mysql数据库重新设计和迁移:将数据库更改为表
发布时间:2020-12-13 22:43:43 所属栏目:PHP教程 来源:网络整理
导读:我错误地将我的应用程序设计为每个用户都有一个数据库.每个用户有3个类似的表.我现在想要一个数据库和3个表;我将在旧数据库中使用数据库名称作为新系统中的参考.旧数据库中存在另一个名为“users”的数据库,用于存储数据库名称.我已经完成了新数据库的模式设
我错误地将我的应用程序设计为每个用户都有一个数据库.每个用户有3个类似的表.我现在想要一个数据库和3个表;我将在旧数据库中使用数据库名称作为新系统中的参考.旧数据库中存在另一个名为“users”的数据库,用于存储数据库名称.我已经完成了新数据库的模式设计,现在离开了迁移.
这里的诀窍是我有3个数据库连接.我首先连接到users数据库和userinfo表,在循环中获取database_name,使用它连接每个旧数据库并进一步连接到个人,帐户和游戏表. 拿起表后,我想用新数据库(DATA_ONE)和表格填充/加入它,而我将旧的database_name附加到新表.对此有任何帮助或有更好的方法吗?非常感谢 <?php $dbhost = "localhost"; $dbname = "users"; $dbuser = "root"; $dbpass = "*****"; $conn1 = mysql_connect($dbhost,$dbuser,$dbpass,TRUE) or die("MySQL Error: " . mysql_error()); $conn2 = mysql_connect($dbhost,TRUE) or die("MySQL Error: " . mysql_error()); $conn3 = mysql_connect($dbhost,TRUE) or die("MySQL Error: " . mysql_error()); mysql_select_db($dbname,$conn1) or die("MySQL Error: " . mysql_error()); $query = "SELECT database_name FROM userinfo"; $result1 = mysql_query($query,$conn1); while($row = mysql_fetch_array($result1,MYSQL_ASSOC)) { $database_name =$row['database_name']; $conn2 = mysql_connect($dbhost,$dbpass) or die("MySQL Error: " . mysql_error()); $db = mysql_select_db($database_name,$conn2) ; // now,pick personal,accounts,games tables of user and populate new database and tables. // this is where i need help. } ?> 解决方法
为什么您认为需要具有相同凭据的3个单独的数据库连接?在任何mysql查询中,您可以通过在表名前加上数据库名称(以及中间的.)来引用同一实例上任何数据库中的表.我建议不要使用’database_name’作为属性名称:
$databases=get_mysql('SELECT DISTINCT database FROM users.userinfo ORDER BY database'); $count_of_users=count($databases); foreach ($databases as $user_offset=>$user) { $uqry="INSERT INTO data_one.personal (user,id,address,password) SELECT '$user',(id*$count_of_users*$user_offset),password FROM ${user}.personal"; ... (假设’id’是一个自动增量值,可以在其他地方引用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |