MYSQL列指定了两次INSERT

时间:2013-02-23 20:33:18

标签: php mysql ajax

我希望能得到一些帮助。

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

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

当我提交表单时我用subst()输入名称,修剪前四个字符,然后修剪最后一个字符,使名称变为“title”,“privacy”就像数据库中的列一样插入它们。

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

发生错误。错误#Column'隐私'指定了两次

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

继续修改名字的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行(任务)时,我知道在一个查询中我告诉它两次进入列,但我怎么能解决这个问题呢?想法?

  

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

2 个答案:

答案 0 :(得分:2)

错误消息说明了所有内容:您正试图在列privacy中插入两个值

  

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',状态= '已完成',优先级= 'HIGH',隐私= '私人'

更糟糕的是,你分配了两个不同的值。您 真的 需要检查您的逻辑,因为这并不是您获得冲突值的好兆头。

答案 1 :(得分: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