2011-06-28 13 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

あなたは条件を使用することができます。 'テーブルがデルタ'であれば '続行します; – Ibu

関連する問題