2012-08-09 110 views
0

有人可以告訴我如何保存兩個數據庫表中的字段嗎?php/mysql SHOW COLUMNS from table1 and table2

也能正常工作爲一個表:

$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";` 

我需要從兩個不同的表中的字段。我在同一臺機器上有兩個數據庫。表格中的字段名稱不同。

這是工作:

$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存在。

+0

有什麼錯誤? – 2012-08-09 10:00:30

回答

1

的問題,你遇到在於選擇DB。選擇第一個數據庫後,您立即選擇第二個數據庫,這會覆蓋前一個數據庫,因此所選數據庫是最後一個數據庫。
一個解決方案是選擇第一個數據庫,獲取所需的列名,將它們保存在您的$csv_output中,然後選擇第二個數據庫,獲取所需的列並將它們追加到$csv_output
烏斯曼提出的解決方案也不錯,做的方法如下

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"; 
+0

瞭解它在mysql> :)上工作現在我試圖讓我的蹩腳的PHP -腳本。 PHP不是我的專業領域.... – user1586771 2012-08-09 10:44:52

+0

第一或第二個解決方案? – Havelock 2012-08-09 10:47:31

+0

關於數據庫連接的想法 – user1586771 2012-08-09 10:50:25

0

查詢更改爲:

$result = mysql_query("SELECT column_name FROM information_schema WHERE table_name IN ('".$table."','".$table2."' WHERE column_name NOT IN ('ID','Key','Text');"); 
+0

Humm..not working。我的腳本是在Apache的頂部工作。當進入頁面時,php-script會生成可以保存或直接打開的csv文件。修改後沒有任何反應。 – user1586771 2012-08-09 10:16:51

+0

這兩個數據庫是否相同?我的意思是,每個數據庫都是表格嗎? – 2012-08-09 10:20:07

+0

不是。數據庫不相同。在Db1上有10個字段和DB2 13字段。有兩個字段「T_ID」,它存在於兩個DB上 – user1586771 2012-08-09 10:24:29

相關問題