2011-09-26 30 views
0

我有这样的代码:获取多个表的列名,并将其插入到另一个表+ PHP MySQL的

$createFields="CREATE TABLE temp_field (fld text NOT NULL, tablename char(50) NOT NULL)"; 
mysql_query($createFields); 

$fields=array(); 

$campaign=mysql_query("SELECT campaignid FROM campaign ORDER BY campaignid"); 

while($row=mysql_fetch_array($campaign)){ 

    $table="'campaign_".$row['campaignid']."'"; 

    $temp_field="SELECT COLUMN_NAME,TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=".$table; 

    $temp_fieldquery = mysql_query($temp_field); 

    while($rowL=mysql_fetch_array($temp_fieldquery)){ 

     $fields[]="'".$rowL['COLUMN_NAME']."'"; 

    } 
$field=implode(",",$fields); 

$insertFields='INSERT INTO temp_field (fld,tablename) VALUES ("'.$field.'","'.$table.'")'; 

    mysql_query($insertFields); 

,我需要有这样的输出:

fld      | tablename 
===================================== 
fld1,fld2,fld3,fld4... | table1 
fld1,fld2,fld3,fld4... | table2 

但我得到的是:

fld           | tablename 
======================================================== 
fld1,fld2,fld3,fld4...      | table1 
fld1,fld2,fld3,fld4,fld1,fld2,fld3,fld4... | table2 

第二个表得到第一台

012的值

我在做什么我的代码错了,请帮忙

回答

1

刚刚在while循环之前初始化你的$fields数组。

$fields = array(); 
while($rowL=mysql_fetch_array($temp_fieldquery)){ 
    $fields[]="'".$rowL['COLUMN_NAME']."'"; 
} 
$field=implode(",",$fields); 

在代码中发生了什么事是,$fields阵列继续为每个后续表由于$fields[]所以复位到一个新的数组应该修复它添加新的领域。

1
INSERT INTO temp_field 
SELECT 
GROUP_CONCAT(COLUMN_NAME separator ",") AS fld 
TABLE_NAME AS tablename 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE 'campaign_%' 
GROUP BY TABLE_NAME 

您的代码示例非常复杂。 只需使用上面的查询。

相关问题