0

誰かが2つのデータベーステーブルからフィールドを保存する方法を教えてもらえますか?

これは、1つのテーブルで正常に機能します。

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");

$result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE Field NOT IN
('ID','Key','Text');");

$i = 0;
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        $csv_output .= $row['Field']."; ";
        $i++;
    }
}
$csv_output .= "\n";`

2つの異なるテーブルのフィールドが必要です。同じマシンに2つのデータベースがあります。フィールド名はテーブル上で異なります。

これは機能していません

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");
mysql_select_db($db2) or die("Can not connect.");

$result = mysql_query("SHOW COLUMNS FROM ".$table." , ".$table2."  WHERE Field NOT IN 
('ID','Key','Text');");

$i = 0;
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        $csv_output .= $row['Field']."; ";
        $i++;
    }
}
$csv_output .= "\n";

フィールド「ID」、「キー」、および「テキスト」は、DB1にのみ存在します。

4

2 に答える 2

1

あなたが抱えている問題は、DBの選択にあります。最初のDBを選択したら、すぐに2番目のDBを選択します。これにより、前のDBが上書きされるため、選択したDBが最後の2番目のDBになります。
1つの解決策は、最初のデータベースを選択し、必要な列名を取得して、に保存して$csv_outputから、2番目のDBを選択し、必要な列を取得して、に追加すること$csv_outputです。
Usmanが提案した解決策も良いです、それを行う方法は次のとおりです

USE information_schema;  -- select the correct DB
SELECT column_name FROM columns WHERE table_name IN ('table1', 'table2');

お役に立てば幸いです。

アップデート

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());

// get the column name from the first DB
mysql_select_db($db1, $link) or die("Can not connect to DB1.");
$result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE Field NOT IN
('ID','Key','Text')");    
$i = 0;
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        $csv_output .= $row['Field']."; ";
        $i++;
    }
}

// get the column names from the second DB
mysql_select_db($db2, $link) or die("Can not connect to DB2.");
$result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE 1");
$i = 0;
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        $csv_output .= $row['Field']."; ";
        $i++;
    }
}
$csv_output .= "\n";
于 2012-08-09T10:37:41.643 に答える
0

クエリを次のように変更します。

$result = mysql_query("SELECT column_name FROM information_schema WHERE table_name IN ('".$table."','".$table2."' WHERE column_name NOT IN ('ID','Key','Text');");
于 2012-08-09T10:01:16.080 に答える