为什么我不能在组合的主键中插入新值?

时间:2019-11-03 10:50:21

标签: php mysql sql database forms

我想将值插入组合的主键中。但是,我只收到erorr消息键“ PRIMARY”的重复条目“ 1-16” 我肯定没有连接问题,因为以前的SELECT查询已经起作用,并且网站上的所有其他程序都在运行。下面是我的段代码。我非常感谢您提供的所有帮助,但是作为我的初学者,我真的很感谢您直截了当和简单的答案:)预先感谢!

<form  method="post">
<select  name="sport_id">
  <?php
$sql= "SELECT * FROM sport";
 $resultat= $kobling->query($sql);
 while ($rad = $resultat->fetch_assoc()) {
   $sport_id=$rad["sport_id"];
   $sportName=$rad["name"];

   echo "<option value='$sport_id'> $sportName </option>";
 }
   ?>
</select>

<select name="person_id">
  <?php
$sql= "SELECT person_id, fname, lname FROM person";

$resultat= $kobling->query($sql);
while ($rad= $resultat->fetch_assoc()) {
  $person_id=$rad["person_id"];
  $fname= $rad["fname"];
  $lname =$rad["lname"];
  $navn= $fname. " ". $lname;
  echo "<option value='$person_id'> $navn </option>";
  // code...
}
 ?>
</select>

Året du startet:
<input type="number" name="startyear" value="">

<input type="submit" name="leggtil3" value="Legg til">

</form>

<?php
if (isset($_POST["leggtil3"])) {
  $person_id=$_POST["person_id"];
  $sport_id = $_POST["sport_id"];
  $startyear=$_POST["startyear"];

$sql= "INSERT INTO personsport (sport_id, person_id, startyear) values ('$sport_id', '$person_id', '$startyear')";
if ($kobling->query($sql)) {
echo "koblingen $sql ble gjennomført";
}
else {
  echo "det var et problem med $sql ($kobling->error)";
}
}

 ?>


here is a picture of my datamodel

2 个答案:

答案 0 :(得分:0)

您的INSERT试图为PRIMARY字段分配非唯一组合。 Auto Increment可能会混乱;确保不采用下一个数字。

Mysql Docs

  

更新InnoDB表中的现有AUTO_INCREMENT列值   不会像对MyISAM那样重置AUTO_INCREMENT序列,并且   NDB表。

(看起来您刚刚进入同一个人并且两次运动。根据您的索引,这些字段的组合必须唯一。)

答案 1 :(得分:0)

主键1-16已在数据库中分配。检查数据库,以确保下一个用于自动增量的值不包含任何这些值。