Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL/PHP插入列从一个表到另一个表_Php_Insert - Fatal编程技术网

SQL/PHP插入列从一个表到另一个表

SQL/PHP插入列从一个表到另一个表,php,insert,Php,Insert,大家好,我正在编写简单的时事通讯脚本,我有两个小组,每个小组有两个不同的表格 我想将订阅者从一个组移动到另一个组,我放置了这个查询,它可以工作: $sql = "INSERT INTO newsletter_subscribers2 SELECT * FROM newsletter_subscribers WHERE id='".$_GET['nid']."'"; 然而,在移动一些以前的订阅者之后,我得到了重复输入键的错误,因为我使用ID移动了supose查询,所以我只想要move、name、

大家好,我正在编写简单的时事通讯脚本,我有两个小组,每个小组有两个不同的表格

我想将订阅者从一个组移动到另一个组,我放置了这个查询,它可以工作:

$sql = "INSERT INTO newsletter_subscribers2 SELECT * FROM newsletter_subscribers WHERE id='".$_GET['nid']."'";
然而,在移动一些以前的订阅者之后,我得到了重复输入键的错误,因为我使用ID移动了supose查询,所以我只想要move、name、lastname和email

$sql = "INSERT INTO newsletter_subscribers2 VALUES (firstname, lastname, email) SELECT newsletter_subscribers.firstname, newsletter_subscribers.lastname, newsletter_subscribers.email FROM newsletter_subscribers WHERE id='".$_GET['nid']."'";
然而,这部分代码似乎不工作,因为我得到了语法错误,谁能帮助我这一点,我将非常高兴

感谢回复

删除这些值

$sql = "INSERT INTO newsletter_subscribers2 (firstname, lastname, email) 
        SELECT newsletter_subscribers.firstname, newsletter_subscribers.lastname, 
               newsletter_subscribers.email 
        FROM newsletter_subscribers WHERE id='".$_GET['nid']."'";
编辑:并始终使用mysql\u real\u escape\u字符串来防止SQL注入:

$sql = "... WHERE id='".mysql_real_escape_string($_GET['nid'])."'";

您必须删除

  $sql = "INSERT INTO newsletter_subscribers2(firstname, lastname, email) 
   SELECT newsletter_subscribers.firstname, newsletter_subscribers.lastname, 
   newsletter_subscribers.email 
   FROM newsletter_subscribers WHERE id='".$_GET['nid']."'";
试试这个:

insert into newsletter_subscribers2 (col1, col2, col3, etc) select col1, col2, etc from newsletter_subscribers2  where 1 = 1

你确定你的
id
字段是一个字符串(当你用单引号引用它时)?为什么你必须使用不同的表?是什么使你为每个“组”存储的数据显著不同?同意@CBroe。如果这两个组在语义上具有相同的性质,那么它们可能应该在同一个表中。如果有任何额外的信息将一个字段与另一个字段区分开来,那么这就意味着只为这些字段添加一个额外的表。在本例中,听起来您可以使用第二个带有一些ID和名称的表来区分这两个组,所有记录都保存在一个表中。