2012-08-09 113 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

相关问题