首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php/mysql数据库的重新设计和迁移:将数据库更改为表

php/mysql数据库的重新设计和迁移:将数据库更改为表
EN

Stack Overflow用户
提问于 2012-05-02 11:55:02
回答 1查看 251关注 0票数 4

我错误地将我的应用程序设计成每个用户都有一个数据库。每个用户都有3个相似的表。我现在只想要一个数据库和三个表;在这里,我将使用旧数据库中的数据库名称作为新系统中的引用。旧数据库中还有另一个名为“用户”的数据库,用于存储数据库名称。我已经完成了新数据库的模式设计,现在只剩下迁移了。

这里的诀窍是我有3分贝连接。我首先连接到用户数据库和userinfo表,在循环中获取database_name,使用它连接每个旧db,并进一步连接到个人、帐户和游戏表。

拾取表后,我将使用新数据库(DATA_ONE)填充/连接它,并将旧的database_name附加到新表中。在这方面有什么帮助吗?还是有更好的方法来做?非常感谢

代码语言:javascript
复制
<?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, $dbuser, $dbpass, TRUE) or die("MySQL Error: " . mysql_error()); 
    $conn3 = mysql_connect($dbhost, $dbuser, $dbpass, 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, $dbuser, $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.   
  }

 ?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-02 12:19:28

为什么您认为需要具有相同凭据的3个单独的数据库连接?在任何mysql查询中,您都可以通过在表名前加上数据库名(和a)来引用同一实例上的任何数据库中的表。在中间)。我建议不要使用'database_name‘作为属性名:

代码语言:javascript
复制
$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)
     , address
     , password
     FROM ${user}.personal"; 
    ...

(假设'id‘是一个可以在其他地方引用的自动增量值)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10413220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档