插入时出现Mysql重复条目错误

时间:2017-04-01 02:08:05

标签: php mysql duplicates

现在正在发生一些非常奇怪的事情,我不明白如何解决它......好吧,暂时我做了,但我找到的解决方案并不是程序应该如何表现......

所以我有这个employeetimesheets表:

empsheet_id | employee_id |timesheet_status |last_update |isWeekNumber|total_hours|isMonth|isYear|overtimeHours

变量:

    $isWeekNumber =  $_POST['isWeekNumber'];
    $attendanceyear= $_POST['attendanceyear'];
    $attendancemonth= $_POST['attendancemonth'];
    $employee_id=  $_POST['employee_id'];

查询:

    $insertemptime= $db->prepare("INSERT INTO employeetimesheets (employee_id,isWeekNumber,isMonth,isYear) VALUES (?,?,?,?)");
    $insertemptime->bind_param("iiss",$employee_id,$isWeekNumber,$attendancemonth,$attendanceyear);
    $insertemptime->execute() or die(mysqli_error($db)); 
    $insertemptime->close();

在插入新行时,如果已有一行具有相同的employee_id

,则会收到此错误
  

致命错误:未捕获的异常' mysqli_sql_exception'与消息   '重复输入' 6748372'关键字' EmployeeTimeSheetsKey''

如果我删除{I}尝试插入的employee_id行,则查询有效。我感到困惑,因为它是一个插入语句...我应该能够使用相同的employee_id添加我想要的任意数量的行,是吗?任何人都知道发生了什么?

1 个答案:

答案 0 :(得分:3)

您已将字段employee_id设置为唯一而非索引

从字段中删除唯一索引并再次添加索引而不使用唯一

示例sql代码

  1. 检查索引

    SHOW INDEX FROM employeetimesheets;
    
  2. 删除索引

    ALTER TABLE employeetimesheets DROP INDEX employee_id;
    
  3. 添加索引

    CREATE INDEX employeetimesheets ON employee_id;