使用mySQL和PHP从一个表中检索两列插入另一个表

时间:2011-05-16 07:36:56

标签: sql arrays merge insert implode

我在mySQL中有两个表,特别是accounts和subscriber_data。

我想使用accounts表中的两列(id,name),并将其插入到名为(sub_id,value)的两列中的subscriber_data表中。

我似乎无法找到一种方法来检索此信息并将其放入另一个表中而不会在同一行中的相同值字段中聚集,如下所示:0,0,1

目前,我的PHP看起来像这样:

$sql = "SELECT * FROM accounts";
$result = mysql_query($sql);

while($alt_result = mysql_fetch_array($result, MYSQL_NUM)){
$id[] = $alt_result[0];
$value1[] = $alt_result[1];
}
$idstring = implode(', ', $id); 
$value1 = implode(', ', $value1); 


$sql = "INSERT INTO subscriber_data (field_id, sub_id, value) VALUES('1', '$idstring', '$value1') ON DUPLICATE KEY UPDATE value='$value1'";
$result = mysql_query($sql);

我是这样的新手,显然做错了什么......我搜索过,找不到答案。

感谢。

1 个答案:

答案 0 :(得分:1)

在调用插入脚本之前,我一开始没有看到你在PHP中做了什么。也许是因为我不习惯PHP脚本,但更可能是因为我当时没有给予足够的重视。

所以,就我能理解你在做什么而言,你似乎做错了。

如果需要将一个表中的值插入另一个表中,只需使用INSERT...SELECT结构。

在你的情况下它应该是这样的:

INSERT INTO subscriber_data (field_id, sub_id, value)
SELECT '1', id, name
FROM accounts

请注意,这是一条指令,它会替换代码中的SELECT...INSERT...。我认为如果你只留下上面PHP脚本的最后两行就足够了,你要存储到$sql的SQL脚本应该根据我的建议进行修改。

如果我遗失了什么,请告诉我。