希望我能有所帮助。

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

该行中的每个输入都有一个原始名称(name =“ tasktitle0”,name =“ privacy0”),当您添加新行时,它们具有相同的名称,只是变量增加了,并附加在if ex(tasktitle1 ,以及taskprivacy1等)。

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

如果我仅提交一项任务,则该应用程序有效。但是如果我创建一个新行(任务),MySql给我一个错误,说

有一个错误。错误#列“隐私”指定了两次

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

继承人的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行(任务)时,我知道在一个查询中我告诉它两次插入列中,但是我该如何解决呢?想法?


  有一个错误。错误#列“隐私”指定了两次
  INSERT INTO dbname.tablename SET ticketNum ='95240560',title ='d',tdesc ='asd',datefrom = '02 / 26/2013',cat ='PERSONAL',userid ='3171',status ='INACTIVE ',priority ='MEDIUM',privacy ='PUBLIC',ticketNum ='95240560',title ='sad',tdesc ='d',datefrom = '02 / 28/2013',cat ='BEREAVEMENT',userid = '1949',状态='已完成',优先级='高',隐私='PRIVATE'

最佳答案

错误消息说明了一切:您正在尝试将两个值插入列privacy


  INSERT INTO dbname.tablename SET ticketNum ='95240560',title ='d',tdesc ='asd',datefrom = '02 / 26/2013',cat ='PERSONAL',userid ='3171',status ='INACTIVE ',priority ='MEDIUM',privacy ='PUBLIC',ticketNum ='95240560',title ='sad',tdesc ='d',datefrom = '02 / 28/2013',cat ='BEREAVEMENT',userid = '1949',状态='已完成',优先级='高',隐私='PRIVATE'


更糟糕的是,您要分配两个不同的值。您确实需要检查您的逻辑,因为这并不是您正在获得相互矛盾的价值的好兆头。

10-04 22:06
查看更多