【问题标题】:Retrieving two columns from one table inserting into another table using mySQL and PHP使用 mySQL 和 PHP 从一个表中检索插入到另一个表中的两列
【发布时间】:2011-08-26 05:47:39
【问题描述】:

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

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

我似乎无法找到一种方法来检索此信息并将其放入另一个表中,而不会将其聚集在同一行的同一值字段中,如下所示: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);

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

谢谢。

【问题讨论】:

  • 你试过SELECT id, name FROM accounts而不是SELECT * FROM accounts吗?
  • 是的,我有。但我不确定如何使用该结果将其插入到新数据库中......
  • 我会做@Andriy M: $sql = "INSERT INTO subscriber_data (field_id, sub_id, value) VALUES('1', '$result') ON DUPLICATE KEY UPDATE value='$value1 '"; $result = mysql_query($sql);

标签: sql arrays merge insert implode


【解决方案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 脚本应该根据我的建议简单地修改。

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

【讨论】:

  • 非常感谢您的帮助!我试图把事情复杂化。
猜你喜欢
  • 2014-08-12
  • 2012-12-05
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2020-11-25
相关资源
最近更新 更多