将多个表中的内容添加到另一个表

时间:2011-06-28 22:39:49

标签: php mysql database loops

我正在开发一个简单的脚本,旨在选择MySQL数据库的所有表并将其数据放在不同的表中。 有问题的表格结构相似。我的目标是在不必编写每个表的名称的情况下完成此操作(因此我可以管理其中的数百个)。

因此,对于此示例,我将 alpha beta ,并希望将其内容复制到 delta 。 我试图用一个循环列出基础中所有表的名称。然后使用带有变量的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());

?>

1 个答案:

答案 0 :(得分: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");也会返回delta,因此您将拥有重复的数据。 将数组的名称放在数组中并循环遍历

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