2011-06-28 78 views
0

我正在研究一个简单的脚本,旨在选择MySQL数据库的所有表并将其数据放入不同的表中。 有问题的表格具有相似的结构。我的目标是完成这个任务而不必写每个表的名字(所以我可以管理数百个表)。将多个表中的内容添加到另一个表中

因此,对于这个例子,我将不得不阿尔法测试,并希望自己的内容复制到三角洲。 我试图用一个循环来列出基地中所有表的名称。然后使用带有变量的MySQL查询。 问题是,它让我返回一个错误说 表“test_db.Resource”不存在 (TEST_DB是我基地的名称和资源是......我不知道!)

有无你有关于如何完成这个任务的想法?

这里是我的代码:

<?php 
// Make a MySQL Connection 
mysql_connect("localhost", "root", "root") or die(mysql_error()); 
mysql_select_db("test_db") or die(mysql_error()); 


    $tables = mysql_list_tables("test_db"); 

    while (list($table) = mysql_fetch_row($tables)) { 
     echo "$table <br />"; 
    } 

// query($q); 
mysql_query("INSERT INTO delta 
SELECT null, name, age FROM $tables ") 
or die(mysql_error()); 

?> 

回答

0
<?php 
// Make a MySQL Connection 
mysql_connect("localhost", "root", "root") or die(mysql_error()); 
mysql_select_db("test_db") or die(mysql_error()); 


    $tables = mysql_list_tables("test_db"); 

    while (list($table) = mysql_fetch_row($tables)) { 
     mysql_query("INSERT INTO delta 
     SELECT null, name, age FROM $table ") 
     or die(mysql_error()); 
    } 
?> 

这应该工作正常,但mysql_list_tables("test_db");也将返回三角洲,这样你才会有重复的数据。 它会更容易有一个数组中的表名和循环通过

$tables = array("alpha","beta"); 
foreach ($tables as $table){ 
    mysql_query("INSERT INTO delta 
      SELECT null, name, age FROM $table ") 
      or die(mysql_error()); 
} 
+0

非常感谢您的帮助,它工作正常。现在我确实有重复的问题。有没有办法不使用数组,或使用它,以便它返回所有其他表? – sf89

+0

你可以使用一个条件,'如果表是delta'继续;'应该工作 – Ibu

相关问题