2013-10-29 211 views
0

您好我正在编写一个简单的新闻稿脚本,其中有两个组,每个组有两个不同的表格。SQL/PHP插入列从一个表格到另一个表格

我想从一个组移动用户到另一个,我把这个查询和它的工作原理:

$sql = "INSERT INTO newsletter_subscribers2 SELECT * FROM newsletter_subscribers WHERE id='".$_GET['nid']."'"; 

但是移动以前的一些用户我重复输入键得到了错误,因为我supose查询后移动带ID,所以我只想移动,名字,姓氏和电子邮件。

$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']."'"; 

然而代码犯规seemst的这一部分工作,因为我有语法错误,任何人都可以帮我这个,我会很高兴的。

感谢您的回复

+1

你确定你的'id'字段是一个字符串(如你引用单引号)? – Raptor

+1

_你为什么需要不同的表格 - 是什么使你为每个“组”存储的数据显着不同? – CBroe

+0

同意@CBroe。如果这两个组在语义上具有相同的性质,那么他们应该可能在同一个表中。如果任何额外的信息区别于其他信息,则意味着要为这些字段添加额外的表。在这种情况下,听起来您可以使用第二个包含ID和名称的表来区分两个组,并将所有记录保存在一个表中。 –

回答

0

您必须删除values

$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']."'"; 
0

删除VALUES

$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_real_escape_string防止SQL注入:

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

谢谢你的快速解决方案 - 欢呼! – user2931689

0

试试这个:

insert into newsletter_subscribers2 (col1, col2, col3, etc) select col1, col2, etc from newsletter_subscribers2 where 1 = 1 
相关问题