2013-02-23 58 views
0

我希望我能得到一些帮助。指定两次MYSQL列INSERT

我正在创建一个添加任务表,用户可以在该任务的规范中输入标题,desc,用户分配和其他内容。有一个选项可以添加另一行(任务),这是使用ajax生成的。

行中的每个输入都有一个原始名称(name =“tasktitle0”,name =“privacy0”),并且当您添加一个新行时,它们具有相同的名称,除了变量递增且附加到如果ex(tasktitle1和taskprivacy1等等)。

当我提交表单I subst()输入的名称,修剪前四个字符,然后修剪最后一个字符,使得名称变成“标题”,“隐私”就像数据库中的列那样将要插入它们。

如果我只提交一个任务,应用程序工作。但如果我创建一个新行(任务)MySql给我一个错误,说

有一个错误。错误#列'隐私'指定两次

我知道为什么要这样做,我只需要知道我该如何解决这个问题。

继承人那里IM修剪名字PHP:

if ($_GET['s'] == "Y") { 
    $str2 = ''; 
    foreach ($_POST as $p => $v) { 
     if (substr($p, 0, 4) != "flag" && $p != "key" && substr($p, 0, 4) == "task") { 
      if (!empty($v)) { 
       $str2 .= mb_substr(substr($p, 4), 0, -1) . "='" . addslashes($v) . "',"; 
      } else { 
       $str2 .= substr($p, 4) . "=NULL,"; 
      } 
     } 
    } 
} 

这里就是我将其插入:

$sql3 = "INSERT INTO nameofDB.tablename SET "; 
$sql3 .= $str2; 
$sql3 = substr($sql3, 0, -1); 

if ($str2 != '') { 
    if ($r2 = mysql_query($sql3, $Link)) { 
     $mess = "Successfully saved support ticket."; 
    } else { 
     $mess = "There was an error. Error #" . mysql_error($Link); 
     echo $mess . "<br>"; 
     echo $sql3; 
     exit; 
    } 
} 

,这里是它显示错误:

这个我是当做2行(任务),我知道在一个查询im告诉它插入列两次,但我怎么能解决这个问题?想法?

发生错误。错误#列'隐私'指定两次 INSERT INTO dbname.tablename SET ticketNum ='95240560',title ='d',tdesc ='asd',datefrom = '02/26/2013',cat ='PERSONAL',userid = '3171',状态= '无效',优先级= '媒介',隐私= '公共',ticketNum = '95240560',标题= '悲伤',tdesc = 'd',datefrom = '02 /二千〇一十三分之二十八' ,猫=“丧”,用户ID =“1949”,状态=“已完成”,优先级=“高”,隐私=“私人”

回答

2

错误消息说,这一切:你想插入两个值到柱privacy

INSERT INTO dbname.tablename SET ticketNum = '95240560',标题= 'd',TDE sc ='asd',datefrom = '02/26/2013',cat ='PERSONAL',userid ='3171',status ='INACTIVE',priority ='MEDIUM',privacy ='PUBLIC',ticketNum = '95240560',标题= '悲伤',tdesc = 'd',datefrom = '02 /二千〇一十三分之二十八' ,猫= '丧',用户ID = '1949',状态= '已完成',优先级= 'HIGH', privacy ='PRIVATE'

更糟糕的是,您正在分配两个不同的值。你真的需要检查你的逻辑,因为这不是一个好的迹象,你有冲突的价值观。

+0

,这是我创建的,创建新的任务和instert他们......我只是似乎可以找出如何查询到它插入分隔附加任务表的点每一行同时 – 2013-02-23 20:43:50

+0

好的球员,我得到了它的地方语法是正确的 INSERT INTO nameofDB.tablename (columnName1,columnName2,columnName3,columnName4) VALUES ( 'row1value1', 'row1value2', 'row1value3' ,'row1value4'), ('row2value1','row2value2','row2value3','row2value4'); 但它为字段插入NULL值,我回声查询之前,它实际上插入它,查询看起来很好......它不给我任何错误,它只是插入一切的NULL值..任何想法? – 2013-02-24 02:13:41

1

在一次插入多行到MySQL表的SQL语法是:

INSERT INTO nameofDB.tablename 
    (columnName1, columnName2, columnName3, columnName4) 
VALUES 
    ('row1value1', 'row1value2', 'row1value3', 'row1value4'), 
    ('row2value1', 'row2value2', 'row2value3', 'row2value4'); 

不能使用INSERT ... SET语法在单个查询中插入多行。

欲了解更多信息,请参阅http://dev.mysql.com/doc/refman/5.5/en/insert.html